【QT 5 调试软件+Linux下调用脚本shell-经验总结+初步调试+基础样例】

【QT 5 调试软件+Linux下调用脚本shell-经验总结+初步调试+基础样例】

  • 1、前言
  • 2、实验环境
  • 3、自我总结
  • 4、实验过程
    • (1)准备工作-脚本
      • 1)、准备工作-编写运行脚本文件
      • 2)、给权限
      • 3)、运行脚本
    • (2)进入qt部分代码
      • 1)、新建空白工程
      • 2)、1、debug调试代码
        • 0.核心代码段
      • 2)、2、界面调试代码
        • 1.提供路径
        • 2.提供文件名
      • 3)、加入布局部分
  • 5、代码链接
  • 6、细节部分
    • 1、ui->无调出编辑框ID
  • 7、总结

1、前言

最近要Linux下做相关软件开发了,还要当自己为新手,本着求知求学的心态,再简单的事情,也要好像学习,一面一些不该犯的错误犯了,另外也是趟一些雷,不害怕出错误,哪怕碰到最简单的错误也要好好总结下。
既然都到Linux 下,使用上位机调用脚本肯定要有的,本次也将简单使用一个简单样例来进行说明。

2、实验环境

实验环境还是挺重要的,因为有时候,在你电脑上能运行的东西,在别人的电脑就不一定能运行,这一部分的原因就可能是实验版本不一样。
系统环境:
环境问题还是要注意下的,不同环境下可能还真的可能不一样。
在这里插入图片描述

QT软件版本:qt 5.14.2

3、自我总结

(1)一步一步按照顺序来,切不可心急,直接使用qt调试
我们调试软件,不能太心急,否则可能反而都不实现不了。
所以我们在实现前,要现在终端上,先实现相关功能,在使用qt调用,这样才能保证问题分离。

(2)调用脚本使用QProcess类
和之前烧写工具一样,调用脚本也是用process类,确定脚本路线,然后调用。

(3)一些基础工具使用
好长时间,没在Linux下弄东西了,想编写脚本,突然忘记了,连基础的vim都想不起来,所以也算复习下吧

vim xxx.sh
  • Vi 是早期Unix系统中的标准文本编辑器。
  • Vim(Vi IMproved)是Vi的升级版,拥有更多特性,如语法高亮、代码折叠、插件系统等。它在Linux社区中非常受欢迎,尤其是在程序员和系统管理员中。
  • Nano 是一个更友好的文本编辑器,操作简单,易于上手,尤其适合那些不太熟悉命令行编辑器的用户。
  • Emacs 是一个高度可定制的文本编辑器,功能强大,但学习曲线相对较陡。它不仅仅是一个文本编辑器,还可以通过扩展变成一个完整的工作环境。

这些编辑器都是通过命令行界面(CLI)访问的,没有图形用户界面(GUI),但它们非常强大和灵活,尤其是在处理文本文件、编程和脚本编写方面。对于新手来说,Nano可能是最容易上手的,而Vim和Emacs则提供了更多高级功能,但需要一定时间来学习和适应。

4、实验过程

(1)准备工作-脚本

使用指令新建一个脚本文件

1)、准备工作-编写运行脚本文件

vim simp1.sh

编写内容如下

#!/bin/bash

echo "hello from script!"


在这里插入图片描述
然后退出,这里不具体说明VIM工具怎么用了。

2)、给权限

//这一步不可缺少
chmod +x simp1.sh 

3)、运行脚本

然后运行脚本.,注意此步骤和qt一点关系没有,是先保证自己脚本能运行

./simp1.sh

如果没有什么问题,就可以看到如下内容了。在这里插入图片描述

(2)进入qt部分代码

上边成功后,我们就可以进入qt部分了。

1)、新建空白工程

在如下这篇文章里,我们安装了软件,并且简单建立一个工程。首次实现了在Linux下运行第一个dome。
【Linux20.04-qt5.12.4软件安装与初步使用-qt在Linux使用-记录-笔记】

这块就不重复造轮了,看看上边文章吧,最后效果,是有个空白项目。
在这里插入图片描述

2)、1、debug调试代码

核心代码如下,就是使用process类。

0.核心代码段
void MainWindow::QProcess_test_shell(void)
{


       QProcess process;
       // 设置脚本执行的工作目录,如果脚本不在当前目录,需要指定完整路径
       process.setWorkingDirectory("/home/wjl/Desktop/qt_work/Linux_test_shell");

       // 连接信号以获取脚本的输出
       QObject::connect(&process, &QProcess::readyReadStandardOutput, [&]() {
           QString info=process.readAllStandardOutput();
           ui->textEdit->setText(info);
           qDebug() << info;
       });

       // 启动脚本
       process.start("./simp1.sh");

       // 等待脚本执行完成
       process.waitForFinished();


}

我们先在debug终端里调试,当然这样做只是方便。

在这里插入图片描述

2)、2、界面调试代码

1.提供路径

如下如果不知道自己动文件在哪里的话,可以使用终端输入指令来查询

pwd

在这里插入图片描述然后放在如下代码里

在这里插入图片描述

2.提供文件名

使用相关指令查看目录下有什么文件,然后填进去

ls

在这里插入图片描述

3)、加入布局部分

加入布局,一个处罚,一个收信息
在这里插入图片描述
简单拉个上下,可以拖动
在这里插入图片描述
然后转到信号槽
在这里插入图片描述
将之前运行函数放在 按下里
在这里插入图片描述### 4、效果验证

在这里插入图片描述

5、代码链接

代码链接:https://download.csdn.net/download/qq_22146161/88625631

6、细节部分

1、ui->无调出编辑框ID

如下在调试的时候,没注意,直接想通过“”“->”调出编辑框的ID,发现不行,其实就是忘记保存了。

在这里插入图片描述
或者布玩局后,先运行下。
在这里插入图片描述
之后就可以了
在这里插入图片描述

7、总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/243837.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

学习openAI 短长期AGI计划、使命、宪章、开创性研究、产品、工作待遇等

网站的设计&#xff1a;简洁而现代 主页 使命&#xff1a;Creating safe AGI that benefits all of humanity. &#xff08;比人类更聪明的人工智能系统&#xff09;&#xff08;自己实现或帮别人实现都认为是达成使命&#xff09;&#xff08;造福全人类&#xff1a;最大限…

windows任务计划的创建、导出和导入

创建任务计划 任务名称 任务触发器 执行bat的话起始于必须填写 创建成功 导出任务计划 选择导出路径 导出成功 导入任务计划 可视化界面导入任务计划 选择任务计划的xml文件 点击确定 导入成功 命令行导入计划任务 cd /d D:\迅雷下载schtasks.exe /create /tn 1234 /xml 123…

Ubuntu 22.04 Tesla V100s显卡驱动,CUDA,cuDNN,MiniCONDA3 环境的安装

今天来将由《蓝创精英团队》带来一个Ubuntu 显卡环境的安装&#xff0c;主要是想记录下来&#xff0c;方便以后快捷使用。 主要的基础环境 显卡驱动 (nvidia-smi)CUDA (nvidia-smi 可查看具体版本)cuDNN (cuda 深度学习加速库)Conda python环境管理(Miniconda3) Nvidia 驱动…

yolov8实时推理目标识别、区域分割、姿态识别 Qt GUI

介绍一个GUI工具&#xff0c;可以实时做yolov8模型推理&#xff0c;包括目标检测、姿态识别、跟踪、区域分割等操作。 可以接入图像、视频或者RTSP视频流进行验证。 推理模型用的是yolov8转onnx之后的。用ultralytics自带的转换即可&#xff0c;不用带NMS。 框架用的是Qt 任…

代码随想录刷题题Day13

刷题的第十三天&#xff0c;希望自己能够不断坚持下去&#xff0c;迎来蜕变。&#x1f600;&#x1f600;&#x1f600; 刷题语言&#xff1a;C Day13 任务 ● 104.二叉树的最大深度 559.n叉树的最大深度 ● 111.二叉树的最小深度 ● 222.完全二叉树的节点个数 1 二叉树的最大…

戴尔外星人Alienware m15 R7原装出厂Win11预装oem系统

链接&#xff1a;https://pan.baidu.com/s/1_ISrHkLDXV3H5iB5k3oldA?pwd4ba9 提取码&#xff1a;4ba9 原厂Windows11系统自带所有驱动、出厂主题壁纸、系统属性专属LOGO标志、Office办公软件、MyAlienware、戴尔外星人控制中心等预装程序 如果不是想要的型号或者不确定具…

【SpringBoot】进阶之Freemarker运用(一起探索freemarker的奥秘吧)

前言 在上一期的博客分享中&#xff0c;我们一起了解了有关SpringBoot的一些理论知识以及简单的运用方法。今天我们进一步的了解&#xff0c;今天给大家分享的是Freemarker的基础使用及案例演示。请认真仔细观看哦 一、FreeMarker简介 1. 概述&#xff08;什么是FreeMarker&am…

[OpenWrt]RAX3000一根线实现上网和看IPTV

背景&#xff1a; 1.我家电信宽带IPTV 2.入户光猫&#xff0c;桥接模式 3.光猫划分vlan&#xff0c;将上网信号IPTV信号&#xff0c;通过lan口&#xff08;问客服要光猫超级管理员密码&#xff0c;具体教程需要自行查阅&#xff0c;关键是要设置iptv在客户侧的vlan id&#…

Linux完成mysql数据库的备份与恢复

背景&#xff1a; 在进行数据报表的测试过程中&#xff0c;为了让我们的测试数据更加真实&#xff0c;因此我们需要同步生产数据到测试环境。方式有很多种&#xff0c;我这里介绍的是通过Linux完成数据同步。 备份数据&#xff1a; 执行命令&#xff1a;mysqldump -uxxx -pxxx…

一文带你掌握Spring事务核心:TransactionDefinition详解!

TransactionDefinition是Spring框架中用于定义事务属性的核心接口。在Spring的事务管理中&#xff0c;这个接口扮演着至关重要的角色&#xff0c;它允许开发者定制事务的各种属性&#xff0c;如隔离级别、传播行为、超时时间以及是否只读。 基本介绍 TransactionDefinition 接…

【抄作业】ImportError :cannot import name xxxxxx ,原博主Activewaste

前情介绍 网上关于这种问题的解决方案一大堆&#xff0c;但是绝大多数都是不适用&#xff0c;或者说解决不了问题&#xff0c;我根据别人所遇到的和我自己遇到的&#xff0c;对这个问题整理了一下&#xff0c;希望能解决这个问题。 问题分析 一、缺少这个module或者func或者p…

代码随想录算法训练营第五十二天 _ 动态规划_300. 最长递增子序列、674.最长连续递增序列、718.最长重复子数组。

学习目标&#xff1a; 动态规划五部曲&#xff1a; ① 确定dp[i]的含义 ② 求递推公式 ③ dp数组如何初始化 ④ 确定遍历顺序 ⑤ 打印递归数组 ---- 调试 引用自代码随想录&#xff01; 60天训练营打卡计划&#xff01; 学习内容&#xff1a; 300. 最长递增子序列 动态规划五…

外汇天眼:投资者最大的敌人——你的大脑

人类大脑的三层构成 为了深入了解投资者做出非理性决策的原因&#xff0c;考虑人脑及其对快乐和痛苦的反应是很有启发性的。 我们的大脑已经进化了数百万年&#xff0c;由三层组成。 核心是我们原始的大脑&#xff0c;它提供了维持我们生存的战斗或逃跑本能。 上面覆盖着一个…

前端如何使用express写一个简单的服务

相信不少前端平常在日常工作中肯遇见过后端API接口没开发出来的时候吧 前端提升小技巧 自己使用nodejs——express ,koa&#xff0c;egg开发接口吧(本人比较喜欢egg和express) 今天先分享一下express 下面是一个简单的demo 1、首先咱们可以新建一个文件夹,创建一个app.js 下…

循环神经网络(1)循环神经网络的记忆能力实验

循环神经网络&#xff08;Recurrent Neural Network&#xff0c;RNN&#xff09;是一类具有短期记忆能力的神经网络&#xff0e;在循环神经网络中&#xff0c;神经元不但可以接受其他神经元的信息&#xff0c;也可以接受自身的信息&#xff0c;形成具有环路的网络结构&#xff…

Github、Gitee优秀的开源项目分享

先赞后看&#xff0c;养成习惯&#xff01;&#xff01;&#xff01;❤️ ❤️ ❤️ 资源收集不易&#xff0c;如果喜欢可以关注我哦&#xff01; ​如果本篇内容对你有所启发&#xff0c;欢迎访问我的个人博客了解更多内容&#xff1a;链接地址 ​ Java 项目 javacore - Java …

ArkTS组件通信

父子通信 情况一&#xff1a;子组件只展示父组件中的状态 父组件通过 State修饰符 定义变量&#xff0c;子组件通过 Prop修饰符 获取变量。 Prop是 「单向传递」&#xff0c;父组件将变量「拷贝」一份交给子组件使用&#xff0c;子组件不可修改变量。 父组件 // 声明变量 …

java写个爬虫抓取汽车之家车型配置参数

前几天有个搞工程的表弟找我&#xff0c;问我什么车好&#xff0c;可以经常跑工地的&#xff0c;看上去又有面子。于是我挥动发财的小手&#xff0c;写一个爬虫程序&#xff0c;筛选并整理了一些数据&#xff0c;并附上下载的图片提供参考&#xff0c;看中了果断第二天提车到手…

C#教程(一):面向对象

1、介绍 C#是一种多范式编程语言&#xff0c;但其中一个主要的编程范式是面向对象编程&#xff08;OOP&#xff09;。面向对象编程有一些特点&#xff0c;而C#提供了丰富的功能来支持这些特点。 2、面向对象特点 封装&#xff08;Encapsulation&#xff09;&#xff1a; 封装…

华为OD机试-传递悄悄话(JavaPythonGo)100%通过率

题意 给定一个二叉树,每个节点上站着一个人,节点数字表示父节点到该节点传递悄悄话需要花费的时间。初始时,根节点所在位置的人有一个悄悄话想要传递给其他人,求二又树所有节点上的人都接收到悄悄话花费的时间。 输入 给定一叉树 09 20-1-1 157-1-1-1-132 注:-1表示空节…