Qt使用类
杉木~
这个作者很懒,什么都没留下…
展开
-
QSerial 串口通信
简单记录一下使用Qserial模块实现Qt的串口通信,我使用的环境是VS+qt,因此需要在创建项目的时候勾选QSerial模块。提前准备:1、虚拟串口工具创建一组虚拟串口,我是COM2和COM3;2、串口调试助手用于和上位机进行信息交互;步骤:1、设计交互UI界面;2、查找可用串口(我省略了,直接开的虚拟串口);3、串口初始化 —— 打开串口、设置串口参数;4、在发送槽函数里面发送数据;5、在接收槽函数里面接收和显示数据;6、关闭串口,释放串口变量。代码:#pragma once原创 2020-08-18 11:22:34 · 1019 阅读 · 1 评论 -
QStandardItemModel数据保存为excel文件
在Qt中可以使用MVC结构显示图像处理的结果数据,有时候需要将数据保存为excel文件,便于数据记录和分析。步骤:获取表格抬头;获取表格数据(注意用,和“\n”隔开);选择保存文件路径和格式;打开文件,写入数据;关闭文件。.csv格式文件可以使用excel文件打开,以“,”分列,以“\n”分行。代码:函数介绍:static QString getSaveFileName(QWidget *parent = Q_NULLPTR,//父窗口const QString &capt原创 2020-08-01 17:21:55 · 982 阅读 · 0 评论 -
qt designer UI设计简记
以前使用qt designer设计ui时,并不是很得心应手,慢慢积累了一些小技巧。简记步骤,便于以后查看。将若label空间用于显示内容,则可以设置背景颜色,方便布局选择可视化;使用Group Box空间进行大体全局布局;在每个Group Box中放入需要的控件;使用Spacers和Layouts, 分别对每个Group Box 进行小控件之间的局部布局;右键Group Box,选择布局中的水平或垂直布局进行Group Box中的自适应布局,可以通过拉伸Group Box测试里面的小控件布局是原创 2020-07-29 09:53:13 · 394 阅读 · 0 评论 -
Q_OBJECT在子线程出错
世界上难以琢磨的不只是女生的心,还有代码的前后不一!以前在笔记本上适用qt多线程时,可以直接通过新建.cpp和.h文件,利用信号与槽连接主线程和子线程。但现在我用台式使用同样的软件环境就会Q_OBJECT报错。如图:从而导致无法在子线程定义信号和槽函数。(错误原因不明)解决方案:通过右键“项目名” -> 点击“类向导” -> “添加类” -> “完成”就可以了。在上图输入类名(自取),基类为:QObject#pragma once#include "qobject.h原创 2020-07-25 21:03:53 · 194 阅读 · 0 评论 -
Qt_按钮触发两次槽函数
以前使用qt creator的时候,可以直接右键转到槽构建槽函数,十分方便。void MainWindow::on_ptn_clicked(){ qDebug()<<"ptn"<<endl;}单击一次按钮,只触发一次槽函数后来使用vs2015+qt的时候,不能直接右键转到槽,但是可以通过命名相同格式来构建槽函数,但会触发两次槽函数。结合网上一些博主的笔记,做了如下尝试:1void test::on_ptn1_pressed() { cout <&l原创 2020-07-20 19:39:03 · 2546 阅读 · 1 评论 -
Qt关闭子线程时程序崩溃及解决
在Qt关闭子线程时,一般使用quit()函数和wait()函数关闭子线程,但可能关闭子线程时,子线程正在接受信号工作,因此,需要在子线程工作之前使用while(){ 工作 }进行判断,同时在关闭线程的按钮中需要设置flag的布尔值。问题:点击关闭按钮的时候仍然出现了程序崩溃的问题解决查阅博客发现,子线程工作结果要通过connect()函数与主线程接连实现,因此只需要使用disconnec...原创 2020-01-04 19:34:24 · 5317 阅读 · 2 评论 -
Qt子线程信号与槽同时传递多张图像
在项目中会出现一个问题,图像处理时需要截取多个ROI区域,进行缺陷检测,但是检测出来的缺陷标记需要在Qt界面上显示出来,ROI区域无法整合在原图像上,因此,打算将各部分ROI区域分别显示在多个QLabel控件中。但是信号函数中传递多个图像参数和其他结构参数比较多且复杂,现使用结构体封装多张图像,然后传递结构体,实现子线程的多图像的传递。1、步骤使用Q_DECLARE_METATYPE注册...原创 2019-12-27 16:43:54 · 1376 阅读 · 0 评论 -
msvc2015_64调试代码遇到的几个问题和解决方法
使用Qt+VS+OpenCV进行图像处理,以后应该也会经常用到,在调试的时候遇到过几点错误,记下来长长记性。多线程使用:采用直接继承自QThread的方法一,在信号与槽connect连接的时候没通,分析应该是connect函数内部的参数编写方式错了。方法:采用继承自QObject的方法二,按照规范的connect函数编写,解决问题。后面多写了几次,更习惯于使用方法二编写线程。connec...原创 2019-12-18 22:08:46 · 314 阅读 · 0 评论 -
Qt多线程信号与槽发送vector类型参数
问题:在机器视觉中使用Qt + OpenCV对图像进行处理时,往往需要将图像处理算法放在子线程中,因此子线程会传递处理后的图像QImage类型数据,以及图像特征数据到主线程。直接传递vector<>类型参数,编译不会出错,但没有显示结果。原因:猜想vector<>类型参数没有传输成功。通过阅读米小鸢博主的博客,感谢!原来信号与槽之间只能传输通用数据类型,如:QImag...原创 2019-12-17 19:40:03 · 3553 阅读 · 0 评论 -
Qt多线程继承自QObject类方法二
新建一个类,继承自QObject类,在类中设置一个线程函数。通过发出mySignal信号调用处理槽函数。class MyThread : public QObject{ Q_OBJECTpublic: explicit MyThread(QObject *parent = nullptr); //线程处理函数 void myTimeout(); v...原创 2019-12-01 11:41:23 · 1082 阅读 · 0 评论