
QT
dijkstar
IT技术让中国未来领先世界,微信:dijkstar
展开
-
QSqlTableModel的canFetchMore、fetchMore效率太低,需替换
【代码】QSqlTableModel的canFetchMore、fetchMore效率太低,需替换。原创 2024-04-28 16:11:22 · 657 阅读 · 0 评论 -
QtConcurrent::run操作界面ui的注意事项(2)
前面的“QtConcurrent::run操作界面ui的注意事项(1)”,末尾说了跨线程的问题,引出了Qt千好万好,就是跨线程不好。原创 2024-05-06 08:54:06 · 561 阅读 · 0 评论 -
QtConcurrent::run操作界面ui的注意事项(1)
既然是ui界面对象,是给人看的,延时几十个ms,人的眼睛不会有感觉,因此,开一个定时器,轮询这些简单的数值int、float变量,在定时器里去更新ui界面对象,这是最简单的方法;另一种方法是,在调用QtConcurrent::run(this,&MainWindow::doSomeWork)的地方,检查返回值,开一个循环等待完成。上面依然是第一种方式的变种,只不过在循环里,借助了QApplication::processEvents(QEventLoop::AllEvents, 100),避免将ui挂死。原创 2024-04-29 16:21:07 · 1058 阅读 · 0 评论 -
Qt编写测试类项目时涉及到测试流程的小结
用Qt编写一些涉及到步骤类的程序,例如,有这样一个需求,用程序去控制程控一台电源,反复给一块带测试的板卡上下电,检查被测板卡能否正常启动(正常启动的标志,是通过网口能否ping通)。第三个思路,是直接在界面按钮的【开始测试】里写步骤流程,你会说那不会把GUI给耗死嘛,是的,自己写一个这样的延时Sleep函数,让它自己去卷吧,反正GUI界面不卡就行!首先考虑到使用多线程,但是多线程有一件麻烦事,就是“跨线程调用”,但是又肯定在线程里去处理网口、文件等的读写,没有什么好的解决办法;原创 2022-11-26 22:47:52 · 374 阅读 · 1 评论 -
Qt的多窗口程序中子窗口大小位置管理
2、处理 MainWindow::resizeEvent事件,见下面的注释,可以自己调整子窗口的起始位置,比如想要横平铺,form1的x=0,y=0,form2的x=w/2,y=0即可,宽高也要适应MainWindow的大小。1、子窗口的创建及显示:假设有两个子窗口,form、form2,在MainWindow构造函数中,原创 2022-11-18 19:17:39 · 1623 阅读 · 0 评论 -
Qt实现多张图片的拼接或叠加
【代码】Qt实现多张图片的拼接或叠加。原创 2022-11-18 18:49:16 · 4909 阅读 · 2 评论 -
Qt的qApp->quit和QMessageBox一块踩过的坑
项目中使用MainWindow框架基础上做开发,在MainWindow的构造函数中,需要做各种资源、配置、外设等的的初始化,如果不成功,给出弹窗提示报错,应该直接退出程序。按照网上搜索,Qt的程序在任意处想要退出使用了qApp->quit,发现该操作并不是真正的退出,后续程序继续执行,如果调用了MessageBox,会导致MessageBox闪退。在窗体MainWindow构造函数中正确的退出程序方法:即便如此,还需要检查任务管理器中(Windows平台),程序是否真正退出。原创 2022-11-18 10:32:34 · 821 阅读 · 0 评论 -
Qt的QSlider一边更新滑块进度,一边使用滑块数值的冲突解决
在项目中,使用QSlider,需求是:一边拖动slider读取滑块位置去设置一个处理的起始进度(读取),一边从处理的进度中送上来的值,来更新slider的滑块位置(写入),这两个操作应该是互斥的,否则用户在拖动slider滑块时,又被送上来的值更新,滑块位置变来变去,体验非常不好。这个问题的解决思路:从一个处理中送上来的值,不要直接更新slider滑块,而是去更新一个数值类型的全局变量。把更新slider的动作放到一个定时器中,靠定时器的开启和关闭来决定什么时候更新滑块的进度。原创 2022-11-16 11:41:07 · 862 阅读 · 0 评论 -
Qt的QProgressDialog使用两条总结(去掉帮助和关闭、设置尺寸)
【代码】Qt的QProgressDialog使用两条总结(去掉帮助和关闭、设置尺寸)原创 2022-11-14 16:15:51 · 1588 阅读 · 0 评论 -
Qt如何QProgressDialog如何屏蔽按键Esc及空格键
"\u001B"就是27,即Esc的键值。由此看出,按键Esc首先触发的是“QEvent::ShortcutOverride”,因此,不能仅简单的处理KeyPress事件。2、子类cpp实现:(这里仅屏蔽Esc,空格键类似,自己添加即可)原创 2022-11-14 15:07:20 · 1432 阅读 · 0 评论 -
qt中基于控制台的程序,如何实现套接字信号-槽方式的接收?(使用lambda语法)
一般认为,qt中传统的【信号-槽】都是配合类一起使用的,如果仅仅写一个简单的基于控制台的测试程序,如何实现呢?这里以QUdpSocket为例,在控制台程序中使用lambda语法将接收处理函数直接写在【信号-槽】里,好处是简化了设计,不好是语法晦涩难懂,但一定抛砖引玉://创建udp套接字QUdpSocket *udpSocket = new QUdpSocket();udpSocke...原创 2019-09-19 18:14:35 · 1151 阅读 · 0 评论 -
QT中多个相同的控件如何用代码方式成批的添加?
使用QT编程,假设有这样的需求:向Widget窗体中添加30个按钮(QPushButton),如何用代码实现呢?有两种方法,一种是:添加:for(i=0; i<30; i++){ QPushButton *bt=new QPushButton(QString::asprintf("Button%d", i+1), ui->widget);//注:最后一个参数一定...原创 2018-08-20 11:27:17 · 5676 阅读 · 2 评论 -
QT5处理 json 总结
1. 假设生成这样的json结构,并将其写入文件:{ "北京市": { "区1": "平谷区", "区2": "海淀区", "区3": "朝阳区" }, "广西壮族自治区": "待续", "河北省": { &q原创 2018-08-21 10:15:59 · 4697 阅读 · 1 评论 -
QT如何处理在网络或内存中传输含有中文的字符串问题?
大家知道,一个含有中文的字符串,比如“中国你好ABC”,在计算机内存储或者传输,最终转换为二进制数据,那么这个中文字符串在QT中,是如何存储、传输、并恢复的呢?首先,为含有中文的字符串指定编码,这里指定为“UTF-8”,或者尝试“GB2312”//char *codeName="system"; //在Windows上,system就是GB2312//char *codeName="...原创 2018-08-21 11:39:17 · 1010 阅读 · 0 评论 -
tcp发送不“粘包”的处理(qt和linux)
当使用tcp套接字发送一个很小的数据块时,接收方并不会立即收到,而是等到积累到一定字节后,套接字才会触发相应的接收处理,这种情况并不是我们想要的。我们所需要的是立即响应接收,因此要在发送端做些设置:若使用qt,可直接使用qt库提供的设置方法://socket 是 QTcpSocket 类型的指针socket->setSocketOption(QAbstractSocket::Lo...原创 2018-08-24 22:31:21 · 2085 阅读 · 2 评论 -
Qt在编译程序时,出现“ has modification time int the future”错误的解决方法。
如题,是当前的计算机日期没有设置正确,使用命令设置好日期时间即可: date -s "2018-07-07 12:12:09"原创 2018-08-30 11:13:26 · 12189 阅读 · 1 评论 -
QT5编译和使用QFTP记录(qt5.11.2 mingw53_32环境)
1. 下载qtftp工程的源码:https://pan.baidu.com/s/1GQZHOwVBke0EgiH_0LVMJQ,并解压;2. 下载ActivePerl5_64:https://pan.baidu.com/s/1IyGA558PT8xAut4pLGUSWQ3. 编译qtftp源工程:进到刚刚解压的qtftp目录,在命令行cmd中:C:\Qt\Qt5.11.2\5.11.2\m...原创 2019-01-04 21:19:25 · 1657 阅读 · 2 评论 -
ffmpeg编程:读取摄像头信息,保存为裸yuv420p、yuyv422视频流
1. 源码下载:https://download.youkuaiyun.com/download/dijkstar/108984622. 编程环境使用Windows下的QT5.11 minGW32,源码中已经放好了fmpeg的bin、include、lib;3. yuv420p:指的是 【planar YUV 4:2:0, 12bpp】,一帧图像的大小为1.5倍的长×宽;它的存放位置见源程序描述...原创 2019-01-05 22:49:57 · 3771 阅读 · 1 评论 -
Linux下有用的 myprintf 函数
输出如:2019-09-09 18:29:30:391 [test1.cpp-> myprintf-> L34] hello: 8898,即带了精确到毫秒级时间的printf,对调试时序逻辑的程序非常有用(如多线程时序同步),用法和普通的printf一样:#include <sys/time.h>#include <time.h>#inclu...原创 2019-09-19 17:57:57 · 485 阅读 · 0 评论 -
qt在GUI显示时,将调试信息输出到控制台的设置
1. 在.pro文件中添加一下设置:CONFIG += console2. 项目的【构建和运行】中,需要勾选【Run in terminal】:原创 2017-01-31 22:40:09 · 4913 阅读 · 0 评论