
Qt开发
高祥xiang
兴趣和努力伴随着我一直走下去,keep,Never give up!
展开
-
qt5 遇到fatal error C1083: 无法打开包括文件: “opencv2/opencv.hpp
首先在opencv配置正确的情况下,出现此情况主要是因为在引入opencv时可能没有重新构建。首先可以尝试点击 构建项目, 然后运行,如果不行。我们重新执行一下qmake,然后运行,就能成功了。提醒一下,这只是一部分这种类型的错误解决方法,如果是开始时配置路径出错,可以查看配置路径文章。...转载 2021-12-25 23:45:03 · 2136 阅读 · 0 评论 -
Qt 报错This application failed to start because it could not find or load the Qt platform plugin
一、简述工作中有一个项目需要开发一个简单的界面,我选择了用 vs2017+Qt5.9.9。切换在Release模式生成运行程序时,报了如下错误:查看Release运行目录时,发现只生成了一个exe文件:二、解决方案由报错的信息可得知是由于运行程序中缺少qt相关依赖文件导致的。1、通过windows的命令提示符,进入到Qt安装环境的bin目录(我用的是msvc2017_64版本),2、输入命令:windeployqt.exe 执行程序路径放一张整个处理过程的截图:原创 2021-05-20 15:04:02 · 15991 阅读 · 4 评论 -
Qt 处理延时的几种方法
有些时候,我们需要程序延时一会儿:这里提供四种方法:1、多线程程序使用QThread::sleep()或者QThread::msleep()或QThread::usleep()或QThread::wait()进行延时处理。Sleep不会释放对象锁,其他线程无法访问对象,因此会阻塞线程;而Wait会释放对象锁,使得其他线程能够访问该对象。2、自定义延时函数:使用QEventLoopvoid Widget::Sleep(int msec){ QTime dieTime =.转载 2020-10-14 16:24:47 · 13557 阅读 · 7 评论 -
Qt QApplication::processEvents详解
应用场景一:处理密集耗时的事情有时候需要处理一些跟界面无关的但非常耗时的事情,这些事情跟界面在同一个线程中,由于时间太长,导致界面无法响应,处于“假死”状态。例如:在应用程序中保存文件到硬盘上,从开始保存直到文件保存完毕,程序不响应用户的任何操作,窗口也不会重新绘制,从而处于“无法响应”状态,这是一个非常糟糕的体验 。 在这种情况下,有一种方法是使用多线程,即在子线程中处理文件保存,主线程负责界面相关。 而如果不想使用多线程,最简单的办法就是在文件保存过程中频繁调用QApplicat...转载 2020-08-06 17:48:34 · 10267 阅读 · 0 评论 -
Qt 获取网卡、IP等信息
转载于https://www.cnblogs.com/cppskill/p/6064395.html,为了节省时间,只放置链接了。转载 2020-08-06 14:32:33 · 1512 阅读 · 0 评论 -
Qt 串口通讯实例
当我们调试串口程序(读取/发送数据),因串口一般需要连接设备上,调试起来并不方便。这时可以在电脑中创建虚拟COM串口来调试程序,提高效率。1、写好qt5版串口通讯程序(我使用的是qt5.7.1,项目为:SerialCommunication);【关于qt5串口程序介绍,有可参考的博文:博文1博文2】2、下载虚拟串口程序Virtual Serial Port Driver,并创建虚拟串口。(1)解压后,运行“vspd.exe”,安装在电脑中;(2)将“替换补丁下载”目录中的所有文件..原创 2020-07-21 14:59:02 · 4415 阅读 · 0 评论 -
Qt5串口通讯简介
一、QtSerialPort简介(一)串口通信基础目前使用最广泛的串口为DB9接口,适用于较近距离的通信。一般小于10米。DB9接口有9个针脚。串口通信的主要参数如下:波特率:衡量通信速度的参数,表示每秒钟传送的bit的个数。例如9600波特表示每秒钟发送9600个bit。 数据位:衡量通信中实际数据位的参数,当计算机发送一个信息包,实际包含的有效数据位个数。 停止位:用于表示单个包的最后一位。典型的值为1和2位。 奇偶校验位:串口通信中一种检错方式。常用的检错方式有:偶、奇校验。(二转载 2020-07-21 14:42:50 · 1136 阅读 · 0 评论 -
Qt 多线程详解 - 两种线程使用方式
Qt提供QThread类以进行多任务处理。与多任务处理一样,Qt提供的线程可以做到单个线程做不到的事情。例如,网络应用程序中,可以使用线程处理多种连接器。QThread继承自QObject类,且提供QMutex类以实现同步。线程和进程共享全局变量,可以使用互斥体对改变后的全局变量值实现同步。因此,必须编辑全局数据时,使用互斥体实现同步,其它进程则不能改变或浏览全局变量值。什么是互斥体?互斥体实现了“互相排斥”(mutual exclusion)同步的简单形式(所以名为互斥体(mutex))。互斥转载 2020-05-09 15:11:27 · 8603 阅读 · 0 评论 -
Qt 在子线程中修改UI
说明因为UI更改需要在主线程中完成,如果在子线程中修改UI,会导致错误或者内存问题。思路在子线程中通过信号-槽的方式,向主线程发送更改UI的信号;主线程接收到信号后,完成对UI的更改。注意1、子线程中发送信号,必须要在子线程的头文件中加上宏Q_OBJECT。如果不加这个宏,在编译时会报错“error: collect2: error: ld returned 1”。2、加上宏Q_OBJECT后,需要先清理项目,然后“构建”工具栏中点击“执行qmake”,最后重新构建项目。【一原创 2020-05-09 10:04:06 · 4426 阅读 · 0 评论 -
vs2013 + Qt 同时运行界面窗口和控制台
在vs2013 + Qt5.8 环境下开发界面程序,经常需要打印一些调试信息,但是因为只显示界面窗口,无法将cout / qDebug() / printf 打印信息显示出来。其实只需要在项目下做个很小的调整就可以了:右击项目打开属性,在子系统处选择“控制台”就可以了再次运行项目,就可以同时出现控制台和窗口了,打印的信息会再控制台上显示。如果项目需要发布,则再次将子系统恢复,...原创 2020-04-14 15:02:28 · 3200 阅读 · 1 评论 -
Qt OpenCV读取资源中图片
简介在 Qt 中图片资源文件路径为 “:/xxx/xxx/xxx.png”这种格式,而使用 OpenCV 的 imread() 函数是无法直接用这样的路径读取图像的。如果想要使用 OpenCV 的 imread() 函数读取 Qt 中的图片资源文件,需要先将图片读取到QByteArray 数组中,然后使用 imdecode 函数实现读取。示例QFile file(":/image...原创 2019-12-23 15:52:29 · 1203 阅读 · 0 评论 -
Qt findChild查找控件对象
简介当已知控件的 objectName 时,想要获取此控件的对象并修改其属性,这时可通过findChild 函数来实现。原型findChild(const QString &aName = QString(), Qt::FindChildOptions options = Qt::FindChildrenRecursively) const举例当 ui 界面中存在 ...原创 2019-12-23 14:39:39 · 2993 阅读 · 1 评论 -
Qt 延时之QApplication::processEvents详解
应用场景一:处理密集耗时的事情有时候需要处理一些跟界面无关的但非常耗时的事情,这些事情跟界面在同一个线程中,由于时间太长,导致界面无法响应,处于“假死”状态。例如:在应用程序中保存文件到硬盘上,从开始保存直到文件保存完毕,程序不响应用户的任何操作,窗口也不会重新绘制,从而处于“无法响应”状态,这是一个非常糟糕的体验 。在这种情况下,有一种方法是使用多线程,即在子线程中处理文件保存,主线程负...转载 2019-11-06 17:49:39 · 6287 阅读 · 0 评论 -
C++ 已知起始时期、截止日期,计算相差多少天
1、全局变量int g_nSurplusDays = 0; //剩余天数int g_nCheckYear = 1901; //校验年份int g_nCheckMonth = 0; //校验月份int g_nCheckDay = 0; //校验日int g_nCheckHour = 0; //校验时int g_nCheckM...原创 2019-10-29 17:05:44 · 1542 阅读 · 0 评论 -
C++ 已知起始日期和使用天数,计算截止日期
1、全局变量int g_nCheckYear = 1901; //校验年份int g_nCheckMonth = 0; //校验月份int g_nCheckDay = 0; //校验日int g_nCheckHour = 0; //校验时int g_nCheckMinute; //校验分int g_nEndYea...原创 2019-10-29 16:43:10 · 2673 阅读 · 0 评论 -
Qt 信号-槽的同步与异步处理
通常使用的connect,实际上最后一个參数使用的是Qt::AutoConnection类型:Qt支持6种连接方式。当中3中最主要:1.Qt::DirectConnection(直连方式)(信号与槽函数关系类似于函数调用。同步运行) 当信号发出后。对应的槽函数将马上被调用。emit语句后的代码将在全部槽函数运行完成后被运行。2.Qt::QueuedConnection(排...转载 2019-10-29 16:15:49 · 2018 阅读 · 1 评论 -
opencv Windows+opencv+Qt环境配置【注意:是MinGW】
工具:CMake:3.8.2OpenCV:3.0.0(测试了下3.1.0与3.2.0也可以)QT:5.8.0MinGW:5.3.0系统: WIndows 10开始1. OpenCV下载完解压到某一文件夹:2.CMake.选择source文件以及输出的文件路径。这里的source文件就是下载opencv解压后的文件路径,而第二个build路径可以自己选择放在哪个文件夹...转载 2019-10-29 16:13:52 · 800 阅读 · 0 评论 -
Qt 中的对象类型转换(Qstring 转换char*有三种方法)
char * 与 const char *的转换char *ch1="hello11";const char *ch2="hello22";ch2 = ch1;//不报错,但有警告ch1 = (char *)ch2;char 与 QString 的转换char a='b';QString str;str=QString(a);QString 转换为 charQS...转载 2019-10-29 15:48:29 · 4026 阅读 · 0 评论 -
QT QImage 与 Opencv的Mat 之间互转
1、QImage 转 Matcv::Mat QImageToMat(QImage image){ cv::Mat mat; switch (image.format()) { case QImage::Format_ARGB32: case QImage::Format_RGB32: case QImage::Format_ARGB32_Premultiplied: mat...转载 2019-10-29 15:37:33 · 537 阅读 · 0 评论 -
C++ error c3872: “0x3000”: 此字符不允许在标识符中使用
在复制黏贴代码时,经常会出现这个错误,原因如下:0x3000是汉语的空格,也就是全角空格,相当于一个汉字,但你又看不见它。你知道的,像逗号,有半角(,)和全角(,)之分的,其实空格也有。0x3000是全角的空格,0x20是半角的空格。最好把这个语句的后面空白部分,都删除掉,免得有不可见的全角空格。比如这段很简单的代码,即使语法没有问题运行会出错:#include<stdi...转载 2019-10-29 14:51:19 · 1864 阅读 · 0 评论 -
Ubuntu 配置第三方动态库的系统环境变量
环境ubuntu16.04 + Qt5.7.1简述将第三方动态库配置到系统环境变量中,便于使用。步骤1、将第三方动态库的头文件及 so 文件拷贝到桌面;RSAInclude文件夹:lib文件夹:2、进入桌面文件夹,打开命令框;3、输入命令 cp -r RSAInclude /usr/local/include4、输入命令 cp -r ...原创 2019-10-14 17:33:42 · 1504 阅读 · 0 评论 -
QT 5.7虚拟键盘(支持中文输入)Windows+Ubuntu
一 Windows下 Qt5.7.1安装虚拟键盘(支持中文输入)1、环境:windows + qt5.7.1(qt-opensource-windows-x86-mingw530-5.7.1.exe)2、Qt环境及虚拟键盘源码下载地址:https://blog.youkuaiyun.com/qq_27278957/article/details/81218007虚拟键盘源码下载此项:3...原创 2019-10-14 16:40:09 · 3006 阅读 · 7 评论 -
QT QFileDialog文件对话框
简述QFileDialog类提供一个对话框,允许用户选择文件或目录。QFileDialog类允许用户遍历文件系统,选择一个或许多文件或一个目录选择文件实例void slots_page4_SRCImg_Btn_Clicked(){ //定义文件对话框类 QFileDialog *fileDialog = new QFileDialog(this); //定义文件对话框标...原创 2019-08-01 10:05:32 · 2093 阅读 · 0 评论 -
QT This application failed to start because it could not find or load the Qt platform plugin "window
编译环境win10 + vs2013 + qt5.8运行环境普通 windows 系统,无 vs2013 和 qt5.8环境。问题描述与解决在编译环境下可正常运行程序,随后将项目的 Release 目录拷贝到另一台电脑上运行,就会出现错误“This application failed to start because it could not find or load the...原创 2019-05-30 17:00:34 · 1255 阅读 · 0 评论 -
Ubuntu GNOME去除顶栏和窗口标题栏方法(亲测可用)
一、环境Ubuntu16.04 + gnome3 ( gome shell 3.18.5)二、简介因项目需要,软件在 Ubuntu 系统中运行,并且全屏显示。而在 Ubuntu 系统中,侧边栏的自动隐藏很容易实现,因为 Ubuntu 本身就自带这个功能,而最头疼的是顶栏,他占据了一定的空间,即使软件全屏显示,顶栏也不会隐藏,而 Ubuntu 系统本身是没有让顶栏消失这个功能的。这就...原创 2019-09-22 15:25:44 · 22539 阅读 · 3 评论 -
Linux 解决“无法运行程序”问题
环境Ubuntu简述在windows系统中,可拷贝其他 Windows 主机中运行的软件到另一台 Windows 主机中运行,而在 Linux 系统中,就不可以直接运行其他 Linux 系统编译生成的 执行文件,原因是没有可执行权限。只需对可执行文件赋予执行权限即可:sudo chmod u+x fileName不需要再对此程序的其他文件赋予权限。...原创 2019-09-09 20:51:49 · 2540 阅读 · 0 评论 -
ubuntu 已编译好的opencv重新配置到新的主机中
环境ubuntu16.04 + Opencv3.4.5 + Qt5.7.1简述在 ubuntu 中做有关 opencv 的项目时,害怕搭建环境,因为搭建环境会花去很多时间和精力,这里自己总结了一种可以省去一些配置环境的时间和精力。 前提是第一次将 opencv 编译好,以后直接重新配置到新的主机中即可。一、前提在其中一台主机中编译好 opencv3.4.5 ,编译和配置...原创 2019-09-09 20:43:58 · 1279 阅读 · 2 评论 -
QT "QDomDocument 的 setContent() 方法总是返回 false"解决方法
简述在使用 DOM 读取 Qt XML 文件中数据时,用到 setContent() 方法来获取 XML 数据,但是该方法总是返回 false。总结共两个原因。原因分析1、XML 文件结构不完整,比如:缺少 "<"等;2、创建 XML 文件时,createElement 传 tagName 参数存在空格,这里不可存在空格,如果存在空格,可正常写入,但是读取时会出现错误。...原创 2019-06-04 17:00:36 · 6565 阅读 · 1 评论 -
QT opencv读取视频数据,QLabel实时显示图像(定时器)
简述使用 Qt 做一个实时显示视频的Demo,这里结合Opencv来做的。该视频可以是从摄像头实时获取的数据,也可以是本地保存的视频数据。简述下思路:使用 QT 做一个文件选择器,选择本地视频; 使用opencv读取该视频数据,将视频分解成一帧一帧的图像; 利用定时器,定时的调用显示图像接口。(这里使用QLabel显示每一帧图像;定时器的时间与视频的帧率有关;);注:这里注重说...原创 2019-05-28 14:51:01 · 12830 阅读 · 8 评论 -
QT QImage、QPixmap与Opencv 中的Mat相互转化
简述我们使用QT和opencv的过程中经常会碰到这样的问题:Mat怎么转化位QImage?Mat怎么转化为QPixmap?今天我来告诉大家一个比较好的解决方案(以下代码参考了别人的,增加了一些修改)代码#include <QDebug>#include <QImage>#include <QPixmap>#include "opencv2/...转载 2019-05-28 14:00:16 · 4842 阅读 · 0 评论 -
QT 中文乱码解决汇总(包括QString与string、char*互转乱码)
简述在QT中使用中文时,经常会碰到论码问题,特别是在MSVC环境中。这里介绍的是QT5版本的,至于QT4版本的,目前已经很少用到,所以不做介绍,网上也可以找到的。下面我来总结几种解决QT中文乱码问题方法。一、string或char* 转 QString 中文乱码解决1、QTextCodec类首先需要包含加上 QTextCodec 的头文件。#include <qtextc...原创 2019-05-28 11:39:28 · 7664 阅读 · 0 评论 -
QT 无法定位程序输入点
在 vs2013 中运行QT项目是正常运行的,但是在 Debug / Release 文件夹中点击 exe 运行程序时,就会弹出如下错误:在网上找了很多种方法都没解决,最后自己猜测是不是因为我电脑中安装了 2 个版本的 QT 导致的,于是在环境变量 Path 中将另一版本的 QT 变量删除,结果程序正常运行了。...原创 2019-05-30 14:27:53 · 3454 阅读 · 0 评论 -
QT 头文件中使用class前置声明
简述在A头文件中定义B类对象作为A的成员变量,一般我们采取的方式是在A.h中包含B的头文件;当项目文件较多且相互包含头文件情况较多时,会减慢程序的编译速度。我们还有另一种方式,既能达到这个效果,且能够节省编译时间,就是在A.h中使用calss前置声明方式来解决。详解1、在A.h中添加:class B;2、在A.h中定义B类对象作为A的成员变量:B *m_B;3、在A...原创 2018-12-03 14:52:11 · 6280 阅读 · 0 评论 -
QT添加项目外UI文件
描述:我们在使用QT Creator做开发时,如果有已经做好的UI界面,我们想把它导入现有的项目中。如果我们直接导入项目中,就会报错,甚至编译器不能编译。解决方法:这时我们只需要做一些小小的修改就可以正常使用外界UI了。保证以下三处的名称相同即可:头文件(.h)中ui声明类名; cpp文件中ui类名; 外界ui对象名。 ...原创 2018-11-26 09:07:05 · 2590 阅读 · 0 评论 -
Qt XML文件的创建、读取介绍以及“重写XML不能覆盖原内容问题”解决
简介XMLXML(Extensible Markup Language,可扩展标记语言),是一种类似于HTML的标记语言,设计目的是用来传输数据,而不是显示数据。XML的标签没有被预定义,用户需要在使用时自行进行定义。XML是W3C(万维网联盟)的推荐标准。相对于数据库表格的二维表示,XML使用的树形结构更能表现出数据的包含关系,作为一种文本文件格式,XML简单明了的特性使得它在信息存储和描述...原创 2018-10-10 23:38:09 · 2522 阅读 · 1 评论 -
QT Windows和Linux下,Qt Creator创建动态库和调用动态库(.dll 和 .so)
简述Windows下动态链接库是.dll文件,静态链接库文件是.lib文件。Linux下动态库是.so文件。Qt嵌套在visual studio时,编译器是MSVC,而Qt Creator的编译器是MinGW,针对MSVC和MinGW这两种编译器,作个简单的介绍:MSVC是指微软的VC编译器。 MinGW是指是Minimalist GNU on Windows的缩写。它是一个可自由使...原创 2019-07-15 11:45:07 · 7833 阅读 · 0 评论 -
QT 解决“ qt creator 修改UI后,运行无改变”问题
只需要将“项目”中的 Shadowbuild 勾选去掉,重新构建项目,运行即可看到修改后的效果。原创 2019-07-29 18:04:14 · 6085 阅读 · 12 评论 -
QT 删除文件、文件夹与创建文件
删除文件夹及内部文件在使用QT时,有时我们想删除文件,有时我们想删除文件夹,而有时我们却想将文件夹及其内部所有内容全部删除,可能文件夹中嵌套文件夹。因为没有一种可以直接一步全部删除的API,所以就需要我们自己通过递归,编写接口来实现。//删除文件夹(包括文件夹中的文件及目录)bool DelDir(const QString &path){ if (path.isEmpty...原创 2019-07-29 18:19:08 · 5619 阅读 · 0 评论 -
opencv Ubuntu16.04+Opencv3.4.5+QT5.7.1环境配置
环境ubuntu16.04 + Opencv3.4.5 + Qt5.7.1一 、安装QT1、下载 qt-opensource-linux-x64-5.7.1.run ,下载地址在我的另一篇博客中介绍了,点击链接。2、如果 qt-opensource-linux-x64-5.7.1.run 不能运行,没有执行权限,需要先给它赋值权限,然后再运行它:sudo chmod u...原创 2019-09-09 20:24:31 · 1053 阅读 · 3 评论 -
Linux Qt "make: 警告:检测到时钟错误。您的创建可能是不完整的"
系统:Ubuntu开发环境:Qt构建项目时,出现错误警告 “make: 警告:检测到时钟错误。您的创建可能是不完整的” 。解决方法:修改时间戳;执行以下命令:find . -type f -exec touch {} \;重新构建程序,成功。...原创 2019-08-28 18:01:27 · 1746 阅读 · 1 评论