![](https://img-blog.csdnimg.cn/20210519150421301.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Qt
文章平均质量分 76
Qt学习经验总结
SOC罗三炮
嵌入式软件开发,ARM CPU架构研究,某厂芯片SOC系统验证工程师
展开
-
开源,点云处理及三维重建软件(Point Cloud Viewer, PCV)的设计与实现
本文所设计的点云处理及三维重建软件主要基于Microsoft Visual Studio 2017以及Qt Creator两个集成开发环境,来完成代码的编写、分析、编译以及调试工作。此外,本文主要基于Qt框架来完成软件界面的设计以及内部逻辑功能的实现,Qt具有一套代码,多平台运行的特点,因此使用此框架开发的软件不仅能够在Windows和Linux等操作系统上运行,还能在MacOS上运行。也正是因为Qt的跨平台开发的特性,也使得本章所设计的软件可以在多个操作系统中正常运行。原创 2023-04-22 18:39:10 · 20777 阅读 · 58 评论 -
Qt开源项目:校医院远程诊断系统介绍
本人研一参考技术书籍开发的一款Qt程序,两年前已上传到GitHub,有兴趣的同学可以去看看。可能之前上传的项目不够完整,导致有一些同学没有在自己的环境上跑通,所以今天将整个工程都重新上传一遍,包括使用到的opencv的动态链接库。原创 2023-04-21 23:09:12 · 6567 阅读 · 4 评论 -
Qt设置软件启动动画(开屏动画、欢迎界面)
Qt设置软件启动界面,可设置动态图或者静态图两种方式原创 2021-11-18 15:34:12 · 7822 阅读 · 2 评论 -
VS加载Qt项目出现“不允许使用不完整的类型”问题
最近做项目使用Qt+Cmake+VS:使用Cmake编译Qt项目,然后在VS中开发。项目结构如图:使用Cmake编译后,打开项目,出现了如下图的问题:原因很简单,VS没有找到ui的头文件:#include "ui_mainwindow.h"可以在VS中发现,出现了四个同名的ui_mainwindow.h文件:但是其中只有一个能被打开,其他的双击打开会报错:将报错的文件移除即可解决问题:...原创 2021-10-31 21:37:26 · 9047 阅读 · 8 评论 -
Qt项目直接打开exe文件出现无法定位程序入口问题
程序可以在Qt Creator上成功运行,但生成的.exe文件双击时始终运行不了,报错如下:出现这个问题是因为找不到对应的dll文件,解决办法很简单:找到QT的安装目录,打开“电脑–>属性–>高级系统设置–>环境变量->Path”,然后在其中加入你自己的bin目录路径:无需重启电脑或者重新编译项目,再次打开exe文件即可成功运行。如果以上方法仍不成功,可以将./bin文件夹中的dll文件复制到exe文件所在目录,也可以解决此问题。...原创 2021-09-28 15:15:49 · 4107 阅读 · 0 评论 -
Qt5中信号槽函数重载问题的两种解决办法
connect(sender, signal, receiver, slot);connect(quitBtn,&QPushButton::clicked,this,&MyWidget::close);在Qt5中信号和槽都可以是函数指针,即 &函数名,即可得到函数所在的地址,但是如果遇到重载的函数,如果不加以区分就会报错。以下是函数原型:QMetaObject::Connection QObject::connect(const QObject *sender, Poi.原创 2020-12-02 17:16:14 · 5966 阅读 · 2 评论 -
QT中布局器的addStretch函数使用效果
QBoxLayout中addStretch函数说明:void QBoxLayout::addStretch(int stretch = 0)Adds a stretchable space (a QSpacerItem) with zero minimum size and stretch factor stretch to the end of this box layout.函数的作用是在布局器中增加一个伸缩量,里面的参数表示QSpacerItem的个数,默认值为零,会将你放在layout中的空原创 2020-11-26 13:29:30 · 931 阅读 · 0 评论 -
Qt使用小技巧记录
Qt字符串国际化tr()正则表达式Qt中使用正则表达式控制输入字符串国际化tr()函数tr()的原型是QObject::tr(),被它处理的字符串可以使用工具提取出来翻译成其他语言,也就是国际化使用。如果想让你的程序实现国际化,那么就在用户所有可见的字符串处都使用QObject::tr()! 但是我们在使用的过程中通常是使用tr(),而并非是QObject::tr(),这是为什么呢?原来,tr()函数是定义在QObject里面的,所有使用了Q_OBJECT宏的类都自动具有tr()的函数。和connect原创 2020-11-26 13:29:54 · 332 阅读 · 0 评论 -
Bug?!Qt5.13 Release模式下对组件使用事件过滤器eventFilter会导致组件消失(透明)
今天使用Qt5.13时,发现其中一个bug:在Release模式下,对组件使用事件过滤器eventFilter会导致组件“消失”,这里的消失并不是真正的消失,而是使它变成透明,在界面中无显示。以下是测试实例:创建一个最简单是Qt工程:mainwindow.h文件:#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>QT_BEGIN_NAMESPACEnamespace Ui { cl..原创 2021-05-12 15:46:43 · 531 阅读 · 6 评论 -
Qt中中opencv使用imread()读取图片失败问题及解决办法
目录问题描述:imread()函数不能识别Qt的路径命名规则解决办法一,先将图片文件读取成比特流,再使用opencv中imdecode()函数将比特流解码成Mat图像二,先将图片读取成QImage格式,再将QImage格式转换为Mat格式问题描述:imread()函数不能识别Qt的路径命名规则我的程序中有这样一段代码: QString ctImgPath = "CT.jpg";//图片文件与主函数文件在同一个文件夹 Mat ctImg = imread(ctImg原创 2021-05-12 10:51:14 · 6279 阅读 · 2 评论 -
Qt中使用QSqlTableModel和QTableView实现与MySQL数据库的联动
连接MySQL数据库 QSqlDatabase sqldb = QSqlDatabase::addDatabase("QMYSQL"); sqldb.setHostName("localhost"); sqldb.setDatabaseName("patient"); sqldb.setUserName("root"); sqldb.setPassword("123456"); if (!sqldb.open()) { QMessageBo原创 2020-12-27 15:01:07 · 6271 阅读 · 0 评论 -
C++opencv改变图片对比度和亮度convertTo()
改变图片的对比度和亮度可直接使用opencv库中的像素转换函数convertTo()。Mat MainWindow::imgProc(Mat myImg,float contrast, int brightness){ Mat imgSrc = myImg; Mat imgDst = Mat::zeros (imgSrc.size(),imgSrc.type ());//生成零像素矩阵 imgSrc.convertTo (imgDst,-1,contrast,bri原创 2020-12-21 11:21:54 · 1418 阅读 · 0 评论 -
Qt5.13.2中配置opencv4.5.0踩坑记录
目录cmake编译opencv时速度过慢或超时mingw32-make时报错错误一 [modules\core\CMakeFiles\opencv_core.dir\build.make:1494: modules/core/CMakeFiles/opencv_core.dir/vs_version.rc.obj] Error 1错误二 [modules\core\CMakeFiles\opencv_core.dir\build.make:1708: bin/libopencv_co...原创 2020-12-19 22:46:43 · 7459 阅读 · 2 评论 -
Qt5.13使用MYSQL报错:QSqlDatabase: QMYSQL driver not loaded 解决办法
参考文章QMYSQL driver not loaded 原理及解决方案Qt: QSqlDatabase: QMYSQL driver not loaded在 5.12 及之前的版本中,Qt 的安装包中自带 MySql 驱动,在 plugins/sqldrivers 目录下可以找到,但到了 5.13 之后,MySql 驱动便没有了,这时我们可以选择手动编译。要编译 MySql 驱动,有两个前提条件:1.在安装 Qt 时,要一并安装源码(勾选“Sources”组件)。笔者这里使用的是5..原创 2020-12-16 16:33:41 · 935 阅读 · 1 评论 -
Qt5多国语言国际化及测试实例
Qt提供了一种国际化方案,而不是采用了INI配置文件的方式。Qt中的国际化方法与GNU gettext类似,它提供了tr()函数与gettext()函数对应,而返以后的资源文件则以“.qm”命名,且其国际化的机制与它的元对象系统密切相关。国际化支持的实现在支持国际化的过程中,通常在Qt中利用QString、QTranslator等类和tr()函数能够很方便地加入国际化支持,具体工作如下:(1)使用QString对象表示所有用户可见的文本。由于QString内部使用Unicode编码实现,所以它可原创 2020-12-15 12:17:07 · 697 阅读 · 0 评论 -
Qt5操作SQLite数据库实例
Qt操作SQLite数据库Qt提供了一种进程内数据库SQLite。它小巧灵活,无须额外安装配置且支持大部分ANSI SQL92标准,是一个轻量级的数据库,概括起来具有以下优点。(1)SQLite的设计目的是实现嵌入式SQL数据库引擎,它基于纯C语言代码,已经应用在非常广泛的领域内。 (2)SQLite在需要持久存储时可以直接读写硬盘上的数据文件,在无须持久存储时也可以将整个数据库置于内存中,两者均不需要额外的服务器端进程,即SQLite是无须独立运行的数据库引擎。 (3)开放源代码,整套代码少于原创 2020-12-10 17:55:45 · 1570 阅读 · 0 评论 -
Qt消息机制:事件分发和事件过滤
目录图形界面应用程序的消息处理模型Qt中的事件处理(1)在Qt中,事件被封装成一个个对象,所有的事件均继承自抽象类QEvent. (2)Qt平台将系统产生的消息转变成Qt事件(3) event()函数-事件分发(3)GUI应用程序的事件处理流程(4)事件(QEvent)和信号(SIGNAL)的不同图形界面应用程序的消息处理模型特点:基于操作系统才能运行 GUI应用程序提供的功能必须由用户触发 用户操作界面时操作系统是第一个感知的 系统内核...原创 2020-12-07 15:40:38 · 5215 阅读 · 2 评论 -
Qt5基于UDP的网络广播程序以及中文乱码问题
UDP服务端界面(发送端)UDP客户端(接收端)UDP服务端(1)在头文件“udpserver.h”中声明了需要的各种控件,其具体代码如下:#include <QDialog>#include <QLabel>#include <QLineEdit>#include <QPushButton>#include <QVBoxLayout>class UdpServer : public QDialog{ Q_OBJEC原创 2020-12-04 16:01:00 · 1243 阅读 · 0 评论 -
Qt5文件及磁盘处理
Qt提供了QFile类用于进行文件操作。QFile类提供了读写文件的接口,可以读写文本文件、二进制文件和Qt的资源文件。处理文本文件,可使用QTextStream类处理二进制文件,可以使用QDataStream类处理临时文件,可使用QTemporaryFile类获取文件信息,可以使用QFileInfo类处理目录可以使用QDir类监视文件和目录变化,可以使用QFileSystemWatcher类#include <QCoreApplication>#include <QF原创 2020-12-02 19:48:24 · 347 阅读 · 0 评论 -
Qt信号槽不能响应信号的原因以及connect函数的两种关联方式
信号槽失效的原因用Qt进行信号与信号槽连接后,会出现信号槽不响应信号的情况,原因可能是以下的情况:1、类没有声明Q_OBJECT;2、信号槽没有定义为pubic/private slots;3、事件被子控件过滤掉了。比如QListWidget,当QListWidgetItem已经处理keypress事件后,QListWidget就不能响应itemDoubleClicked事件了。4、信号槽的参数是自定义的,这时需要用qRegisterMetaType注册一下这种类型。具体操作可搜索 qRegist原创 2020-11-30 15:21:01 · 18035 阅读 · 2 评论 -
Qt 5模型/视图结构
Qt引入了模型/视图结构用于完成数据与界面的分离,即InterView框架。Qt的InterView框架把视图和控制器部件结合在一起,是的框架更为简洁。为了灵活地处理输入,InterView框架引入了代理(Delegate)。通过使用代理,能够自定义数据条目(Item)的显示与编辑。Qt的模型/视图结构分为三部分:模型(Model)、视图(View)和代理(Delegate)。其中,模型与数据源通信,并为其他部件提供接口;视图从模型中获得用来引用数据条目的模型索引(Model Index)。在视图原创 2020-11-28 13:40:50 · 256 阅读 · 0 评论 -
Qt5图形视图框架Graphics View
Qt5图形视图框架Graphics View一,Graphics View框架结构的主要特点二,Graphics View框架结构的三元素1.场景类:QGraphicsScene类2.视图类:QGraphicsView类3.图元类:QGraphicsItem类三,GraphicsView框架结构的坐标系统1.场景坐标2.视图坐标3.图元坐标一,Graphics View框架结构的主要特点Graphics View框架结构的主要特点如下。(1)在Graphics View框架结构中,系统可以利用Qt绘图原创 2020-11-25 10:33:46 · 1079 阅读 · 0 评论 -
Qt5.13监听鼠标滚轮的上下滚动事件QWheelEvent的angleDelta().y()
There are two ways to read the wheel event delta: angleDelta() returns the delta in wheel degrees. This value is always provided. pixelDelta() returns the delta in screen pixels and is available on platforms that have high-resolution trackpads, such as mac原创 2020-11-24 17:53:18 · 10699 阅读 · 3 评论 -
Qt的QVariant类中被禁止的枚举GlobalColor、BrushStyle、PenStyle和CursorShape
在Qt的qvariant.h中有这样一段话:// These constructors don't create QVariants of the type associcated// with the enum, as expected, but they would create a QVariant of// type int with the value of the enum value.// Use QVariant v = QColor(Qt::red) instead of QVar原创 2020-11-23 19:40:05 · 1855 阅读 · 1 评论 -
Qt5位置相关函数的区别概述
Qt提供了很多关于获取窗体位置及显示区域大小的函数,如x()、y()和pos()、rect()、size()和geometry()等。几种函数的主要区别如下:x()、y()和pos()函数的作用都是活的整个窗体左上角的坐标位置frameGeometry()函数和geometry()函数相对应。frameGeometry()函数获得的是整个窗体的左上顶点和长宽值,而geometry()函数获得的是窗体内中央区域的左上顶点坐标及长宽值。直接调用width()和height()函数获得的是中央区域的长宽原创 2020-11-23 10:23:39 · 761 阅读 · 0 评论 -
Qt容器类QList、QLinkedList和QVector类
QList< T >是迄今为止最常用的容器类,它储存给定数据类型T的一系列数值,相对于其他Qt容器类,QList被高度优化。QList< T >维护了一个指针数组,该数组存储的指针指向QList< T >存储的列表项的内容。因此它提供了基于下标的快速访问。对于不同的数据类型,QList采取不同的存储策略:如果T是一个指针类型或指针大小的基本类型(即该类型所占的字节数和指针类型所占的字节数相同),QList会直接将数值存储在它的数组中。如果存储对象的指针,则该指针指原创 2020-11-11 12:08:52 · 1041 阅读 · 0 评论 -
Qt入门基础知识 pro项目文件、QApplication和信号和槽机制
Qt入门pro项目文件QApplication应用程序类信号和槽机制自定义信号槽信号槽的更多用法pro项目文件QT += core gui Qt包含的模块greaterThan(QT_MAJOR_VERSION, 4): QT += widgets //大于4版本以上 包含 widget模块TARGET = 01_FirstProject //目标 生成的.exe程序的名称TEMPLATE = app //模板 应用程序模板 Application原创 2020-11-09 17:15:46 · 1763 阅读 · 0 评论 -
Qt程序图标更改以及打包发布生成可独立运行的exe文件
程序打包发布程序图标更改程序打包发布使用Enigma Virtual Box软件打包程序图标更改首先将你需要更改的图标XXX.ico文件复制到工程目录下:然后在qt creator中打开.pro文件,在末尾处添加一行代码,h6.ico为我的ico文件名称:RC_ICONS = h6.ico点击编译或运行,之后可以在工程目录文件中看到生成的exe文件的图标已经更改:程序打包发布首先选择Release模式,编译运行。然后让工程文件在Explorer中显示,找到release文件夹原创 2020-11-09 11:54:27 · 841 阅读 · 0 评论