![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
QT
猪在黑魔纹里
这个作者很懒,什么都没留下…
展开
-
树莓派发布qt release程序并开机自启动显示终端
打包程序1.在release模式下编译代码,将build-xxx release文件夹中生成的执行文件复制到自己的执行文件夹中,我这里是放在`/home/pi/output`中. 2.在output文件夹中新建脚本`cplib.sh`:此脚本会将程序依赖库复制到当前文件夹中.#!/bin/sh exe="vivoMES" # 修改发布程序的名称des="/home/pi/output/" # 修改输出可执行文件路径deplist=$(ldd $exe | awk '{.原创 2022-04-06 12:35:31 · 960 阅读 · 3 评论 -
QtCreator中ToDo插件
[帮助] =======> [关于插件]根据提示重启生效[工具] =======> [选项]之后在注释里添加 // TODO 就会自动添加在To-Do事项里了!原创 2022-04-01 14:03:38 · 339 阅读 · 0 评论 -
Qt QString().sprintf(“%x“)解决打印无符号十六位数
场景:最近使用海康工业相机的SDK进行二次开发,打印出来的函数返回错误码总是怪怪的,和开发手册里的对不上号,其实就是无符号十六位被Qt默认转成了int型,然后传到QString代码:在MFC的Demo里他是这么写的:cstrInfo.Format(_T("Get hight failed! err code:%#x"), nRet);而我是这么写的:QString("%1 = Fail error code:%2").arg(str).arg(nRet);打印结果很残酷,转成十六进制数我原创 2022-03-11 15:49:23 · 2968 阅读 · 0 评论 -
Qt多线程[QMessageBox]Cannot set parent, new parent is in a different thread以及connect注意事项
Cannot set parent, new parent is in a different threadlamda表达式的注意事项信号发出,槽函数不执行原创 2022-03-09 16:46:28 · 7339 阅读 · 5 评论 -
Qt获取本地有效mac地址
获取有效mac地址//获取当前有效网卡QString strMac;QList<QNetworkInterface> ifaces = QNetworkInterface::allInterfaces();//获取所有网卡信息for (int i = 0; i < ifaces.count(); i++){ QNetworkInterface iface = ifaces.at(i); if ( iface.flags().testFlag(QNetwork.原创 2021-07-05 14:36:28 · 1919 阅读 · 0 评论 -
Qt信号与槽执行频繁导致程序崩溃
问题情景:使用Qt编写运动控制上位机时,需要读取IO端口信号,并根据读取到的信号将传感器的状态显示在主界面。由于没办法读取到电平的上升沿或下降沿变化,所以只能在循环内一直读取IO的电平,而IO端口数量比较多,大概有30个。如果读到电平后就发送信号,告知MainWindow更新控件,会导致程序崩溃。解决方法:限制信号发送的频率,当IO电平是持续高电平或持续低电平时,此时发送的信号都是无意义的。可以新添加一个temp变量,用来储存上一个电平信号。当读取到电平时,先判断当前电平和temp是否相等,不原创 2021-03-10 11:37:50 · 3477 阅读 · 0 评论 -
Qt使用findChild函数,使用循环遍历访问多个控件
使用场景:在工程中通常都会碰到需要访问大量且功能重复的控件,比如更改label的显示文本,改变颜色等。Qt中findChild函数可以很方便的实现这一步骤。代码说明:用QLabel模拟IO信号灯,需要在读取到低电平时让IO信号灯呈现绿色。UI中Label的名字统一为"led_x"( x为数字 ).for(int i=0; i<16; i++){ // label名字为led_0、led_1...led_15 QLabel *led = this->findChild&l原创 2021-03-10 11:24:28 · 2763 阅读 · 0 评论 -
QSettings保存、读取配置文件
基本用法:QSettings API基于QVariant,通过键值对的形式保存参数。QSettings在使用时需要声明公司或组织名称以及产品名称,简单点说其实就是先声明 [ 结点名字 ],在结点下再声明 [ 键名 ] 以及对应的 [ 值 ] 。// 配置文件以ini的形式保存QString fileName = QCoreApplication::applicationDirPath() + "/Config.ini";// 实例化QSettings对象QSettings *setting原创 2021-03-06 14:57:21 · 3220 阅读 · 0 评论 -
Qt添加pri子工程,功能模块化
为了让项目文件不那么臃肿,在根目录下新建文件夹,并在文件夹中新建xxx.pri的文件。在工程的pro文件中添加如下代码:INCLUDEPATH +=$$PWD/include# 可以添加多个pri工程include(./electric_control/electric_control.pri)重新编译,子模块便会加入到当前工程中。...原创 2021-02-22 16:56:15 · 612 阅读 · 0 评论 -
Qt在树莓派中根据心跳包的返回值同步服务器时间
在之前的项目中需要根据服务器返回心跳包的值来设置本地时间。我是通过编写shell脚本,将更改时间的命令行写在脚本里,使用QProcess调用脚本,这部分在Qt中调用system()和QProcess执行命令行,更改树莓派的系统时间中有说明。这里主要将通过QFile改写脚本文件,将服务器给的时间当作参数写入脚本文件。(网上好像有shell脚本直接使用参数的方法,当时我没有了解到)QFile有读写文件的功能QFile readFile(/.....)//读取文件路径readFile.open(QIODe原创 2020-12-01 17:07:38 · 187 阅读 · 0 评论 -
Qt不同界面通信问题详解(四种情况)
在初学Qt时这种不同界面、跨类通信的问题困扰了我很久,而且网上很少有文章完整的介绍Qt中不同的跨类通信问题,现在项目完结正好总结一下自己的想法。比如现在有三个界面类,分别为A、B、C,其中A为父类,B、C都为A的子类界面。① 最常见的情况是子类向父类发送信号,在父类执行槽函数。B→A (C→A)//A.cpp#include "A.h"#include "B.h"B *b = new B(this);connect(b,&B::sig,this,&A::slot);//c原创 2020-11-30 16:14:39 · 2207 阅读 · 5 评论 -
Qt使用moveToThread( )正确的开启多线程、安全的退出线程
Qt中开启多线程有两种方式,一种是重构run函数,另一种是moveToThread的方式,这里我主要介绍一下moveToThread,这是Qt4.8后新增的功能,也是Qt开发者极力推荐使用的多线程方式。首先需要为子线程单独创建一个类,继承QObject。如上图,让耗时函数在worker类中执行。之后在主线程引用此类的头文件和QThread,并实例化耗时类对象和线程对象。#include <QThread>#include "worker.h"QThread my_thread;原创 2020-11-30 10:13:49 · 16611 阅读 · 7 评论 -
Qt中调用system()和QProcess执行命令行,更改树莓派的系统时间
最近给vivo做的设备需要连接MES生产内网,要求机器根据心跳包返回值来同步服务器时间。而这一步操作需要在上位机程序中执行,也就是在Qt中调用命令行或者更改配置文件来设置系统时间。树莓派更改系统时间的方法很多,在这里我介绍两种比较方便的:① 使用命令行:sudo date --s=“2020-11-28 14:30:00”② 编写shell脚本,通过调用shell脚本执行命令行。新建"systime.sh"脚本,在脚本中写入:#! bin/bashsudo date --s="2020-11-2原创 2020-11-28 17:02:46 · 4142 阅读 · 0 评论 -
Qt中接收串口数据不完整、分段的解决方法
最进在串口通信时碰到了一个问题,向485串口发送指定报文,会收到一条关于压力数值的数据。但我将其qDebug打印出来却发现数据被分成了两部分依次打印,之后通过验证我确定了问题出在readyRead的信号与槽这一部分。连接函数: connect(my_serialport,&QSerialPort::readyRead,this,&MainWindow::readMyCom);在槽函数readyRead的入口处加入 qDebug()<<"-"; 可以发现 “-” 连同分段的原创 2020-11-04 08:58:34 · 11550 阅读 · 8 评论 -
Qt中串口通信,十六进制进制转换问题
在与串口通信时,我需要给串口发送指定报文格式的命令,在接收到串口返回的数据后需要转换成浮点数并且显示出来。这里讲一下我自己碰到的问题,以及我发现的解决方法,如果大家有更好的方法可以在下方留言一起讨论。为了模拟真实的串口通信环境,我这里是用自己写的软件和在网上下载的串口助手进行数据交互。由串口助手发送"42F6CCCD",在自己写的窗口中转换成浮点数并显示。然而本应该显示"123.4",但是显示出来却变成"6.27543e-41",显然肯定是有问题的。 QByteArray strhex = my_原创 2020-10-28 15:12:50 · 4462 阅读 · 4 评论 -
Qt编写简易串口助手,实现数据收发
近期有个项目需要通过Qt进行串口通信,本文的目的是简单的记录Qt中串口相关类以及函数的使用方法。Qt中已经封装好了串口的类:QSerialPort、QSerialPortInfo。QSerialPort类提供了操作串口的各种接口;QSerialPortInfo类提供计算机内可用串口的各种信息,起辅助作用。在Qt中调用串口相关类时,需要在pro文件中加入:QT += serialport并引入相关头文件:#include <QtSerialPort/QSerialPort&g原创 2020-10-27 14:19:40 · 1622 阅读 · 2 评论 -
Qt中文字符串显示报错、乱码解决方法
在Qt中使用字符串QString时经常会碰到莫名其妙的报错,比如:this->setWindowTitle("简易串口助手");//error: C2001: 常量中有换行符对于这种情况,通常只要在字符串的末尾加一个空格,使中文和引号隔开即可:this->setWindowTitle("简易串口助手 ");但有时,即便是这样可以编译通过但还是会显示乱码:此时只需要在工程的pro文件中加入下列代码,并将字符串代码修改一下,即可解决中文字符串乱码问题,但这只针对msvc编译器可行,其原创 2020-10-27 11:12:24 · 6484 阅读 · 2 评论 -
QtCreator5.14.0+MSVC2015+Opencv4.1.0环境配置
标题最近有个项目需要通过工控机控制相机处理图像的同时对PLC进行双向通信,最终选取QTcreator最为IDE。我使用的是QT5.14.0、Visual Studio 2015、Opencv4.1.0作为编程平台,下面将说明如何进行环境配置。软件下载首先是下载对应版本的各个软件,QT建议去清华开源软件镜像站下载,网速比官网快不少。VS2015、Opencv4.1.0建议直接去官网下载。QT5.14.0:https://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt原创 2020-10-21 13:58:42 · 1091 阅读 · 0 评论 -
Qt中点击pushButton按钮实现切换父子界面
这里用到的是QWidget类中的show()和hide()函数。比如这里我们要实现通过点击“参数设置”按钮来跳转到新的界面,并在新界面进行参数选择,如下图所示:大致思路是通过绑定“参数设置”按钮的点击信号,将新的ui窗口show出来,原来的主程序窗口可以自行选择是否要hide。我们在项目Forms中添加QT设计师界面类文件,并且将ui界面设置好,并在原头文件中引用这个头文件。然后在主窗口的cpp文件里实例化这个新窗口,并在槽函数中将新窗口show出来:void Widget::on_btn_C原创 2020-10-21 10:19:05 · 3456 阅读 · 1 评论 -
Qt设置按钮只读,屏蔽鼠标事件
对于按钮没有setReadOnly()的函数,但是可以换一个思路:我们可以通过屏蔽鼠标事件来达到只读的操作。比如这里我用Radio Button当作控制灯,又另一个Push Button来控制灯的开关。给Radio Button一个属性设置:ui->light1->setAttribute(Qt::WA_TransparentForMouseEvents, QIODevice::ReadOnly);//设置按钮屏蔽鼠标事件,达到按钮只读的目的ui->light1->set原创 2020-10-13 14:48:17 · 1637 阅读 · 0 评论 -
Qt一键获取本地IPv4地址
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar原创 2020-10-13 14:31:54 · 1865 阅读 · 0 评论