QT
文章平均质量分 56
队长-Leader
这个作者很懒,什么都没留下…
展开
-
QT编译liblzma
liblzma库是xz utils的子集,这里先下载xz utils源码。新建xz_lib文件夹。解压xz utils源码,取出extra,lib,src三个文件夹,并放入xz_lib文件夹中。再将config.h.in重命名为config.h,放入xz_lib文件夹中,并修改成下面这样:#ifndef CONFIG_H#define CONFIG_H/* Prefix for symbols exported by tuklib_*.c files */#define TUKL原创 2021-04-15 23:35:49 · 1625 阅读 · 0 评论 -
QT编译libjpeg
先下载libjpeg源码。将源码解压,新建jpeglib文件夹,将源码中所有.c和.h文件复制到jpeglib文件夹中。再将jconfig.txt改名为jconfig.h,再复制到jpeglib文件夹中。在jpeglib文件夹中,删除以下文件:cjpeg.cckconfig.cdjpeg.cexample.cjcapimin.cjdapimin.cjmemansi.cjmemdos.cjmemmac.cjmemmgr.cjmemname.cjmemnobs.cjmem原创 2021-04-13 22:06:41 · 892 阅读 · 0 评论 -
QT编译Xpdf
先参考本博客的《QT编译bzip2和zlib》、《QT编译libpng》、《QT编译FreeType和Little CMS》完成这些依赖库的编译。下载xpdf源码。复制以下文件到xpdflib文件夹中,其中aconf.h.in修改文件名为aconf.h。再将aconf.h修改为下面所示(我这里没有使用Little CMS,如有需要,请自行添加源文件并将以下文件中相应的条件编译改为#define HAVE_LCMS 1)。/* * aconf.h * * This file is mo原创 2021-04-08 23:32:27 · 1010 阅读 · 0 评论 -
Qml FileDialog发布
Qml的FileDialog有两种,其中labs的比较好用,如下图所示。但是在使用windeployqt发布应用时,发现界面不显示了。需要将platform文件夹,复制到应用的目录中,也是对应Qt/labs。如下图所示,放到Qt/labs文件夹中,如果没有对应的路径,则需要自己新建文件夹。最后在platform文件夹中,可以删掉其中一个dll,看你是debug发布(文件名最后面带d),还是release发布(文件名最后面不带d)。...原创 2021-04-08 22:33:10 · 394 阅读 · 0 评论 -
QT编译FreeType和Little CMS
FreeType是个开源字体引擎,可以移植到arm中,也可以在桌面软件中使用。下载FreeType。这里使用FreeType 2.10.4版本。使用QT Creator新建工程,工程名为FreeType。解压后,只取出src和include两个文件夹,并放在freetype目录中。删除src文件夹中tools和gxvalid。将src和include中的.c和.h文件都添加到工程中。在.pro中添加下面这行。INCLUDEPATH += \freetype/inclu原创 2021-04-06 23:15:37 · 1918 阅读 · 4 评论 -
QT编译libpng
libpng依赖zlib,先参考本博客的《QT编译bzip2和zlib》,完成zlib的编译。接下来,下载libpng源码。点击下图所示按钮即可。解压后,新建lpng文件夹,复制目录下的以下文件到lpng中,均为最上顶目录的文件。另外还需要scripts目录下的pnglibconf.h.prebuilt,将其重命名为pnglibconf.h。再修改pnglibconf.h,添加#include "../zlib/zlib.h"再将zlib的源码复制到工程目录中,顶层文原创 2021-04-01 22:57:20 · 993 阅读 · 0 评论 -
QT编译bzip2和zlib
bzip2没有什么依赖,源码编译比较简单。先下载bzip2源码。新建src文件夹,把以下文件放在src文件夹中。因为bzip2.c中有main()函数,这里用条件编译把它注释掉。在bzip2.c中增加#if 0和#endif,如下图所示。创建工程,main.c中改为下图所示,好了,可以使用bzip2的api了。接下来,可以使用bzip2的源码来编译成dll。...原创 2021-03-09 22:13:14 · 1073 阅读 · 0 评论 -
调试助手DebugLeader
虽然网上有很多调试助手,不管是串口调试还是网络调试,但是总有一些不如意的地方。除了功能上不能满足需求以外,有的要管理员方式启动,还很多广告,也有一些要收费。所以要自制一个调试助手,要能满足以下需求。1、快捷键切换窗口。F1=单串口,F2=双串口,F3=串口+网络,F4=双网络,F5=图表。2、去掉无用的设置,如:数据位、校验位、停止位等等。3、自动获取串口号,网卡IP。4、可用快捷键发送数据。5、统计字符总量以及每秒字符数量。6、具有添加CRC校验以及校验和的功能。7、.原创 2020-06-02 16:29:41 · 605 阅读 · 0 评论 -
QT的QmlCacheGeneratedCode错误
原有工程可以编译通过,添加了新的qml文件后,编译出现以下错误:undefined reference to QmlCacheGeneratedCode XXX重新构建工程,错误仍未解决。将工程下的.qmake.stash文件删掉,重新编译,发现可以编译通过,且不提示该错误了。...原创 2020-05-31 22:06:52 · 1827 阅读 · 1 评论 -
单片机量产软件
单片机批量生产时可能会遇到以下问题:1、每块板子都需要使用UUID,但是单片机不支持UUID。2、单片机可以通过串口指令读取厂家信息,如:版本号、批次、生产日期等,如何方便修改这些打印信息?3、烧录和测试如何一键完成?4、如何跟踪板子信息,方便统计产量、对接客户信息?所以,本文介绍如何设计单片机量产软件来解决这些问题。该量产软件需要实现以下功能:1、UUID、厂家信息需...原创 2020-04-05 00:20:54 · 1344 阅读 · 0 评论 -
Qt单一实例进程——使用qtsingleapplication
用Qt发布的应用,每双击一次,都会打开一个软件,这可能会导致一些不良影响,比如:临界资源的访问。所以,我们希望无论双击多少次这个应用,都只会打开一个软件。这就需要使用qtsingleapplication。用法很简单,只要把src的代码添加到工程就可以使用了。但是qtsingleapplication默认使用Widget。对于Widget的应用,可以直接支持。对于使用QGuiApplication...原创 2017-12-02 21:39:06 · 3186 阅读 · 0 评论 -
Qt截屏
这里是在Win10下,使用Qt5.7.0(cpp+qml)实现截屏。新建一个ScreenShot类继承QObject。使用QScreen可以截到全屏(包括任务栏),并把图片保存到本地(使用完后,可以删掉它)。bool ScreenShot::getPicture() { QScreen * screen = QGuiApplication::primaryScreen(); retur...原创 2018-03-14 11:06:17 · 913 阅读 · 0 评论 -
Qt多线程总结
一、Qt下使用线程主要有两种方法。一种是传统的继承QThread类,重写run方法。该方法已经落伍了,主要原因线程不安全,需要自己手动加锁,比较麻烦,所以推荐使用方法二。定义一个工作线程(Worker类)继承QObject,在主线程(Controller类)中创建QThread对象、Worker对象,Worker对象调用moveToThread方法。这样一来,整个Wor原创 2017-04-29 21:16:19 · 9752 阅读 · 0 评论 -
Qt QUdpSocket类无法广播
电脑装了虚拟机,有虚拟网卡,导致QUdpSocket类无法广播到255.255.255.255.发现,禁用虚拟网卡后,可以正常广播。而其它软件,在启用虚拟网卡的情况下,也能正常广播。原因是:没有绑定电脑物理网卡的ip,导致QUdpSocket随便找一个网卡发包了。发现原来bind函数如下:mySocket->bind(1500,QUdpSocket::ShareAddr原创 2017-03-20 16:24:19 · 2479 阅读 · 0 评论 -
QT5串口通信——基础篇
这里介绍一下,用QT5实现串口通信的应用程序。新建工程,选QWidget为基类,如下图所示。在.pro文件,中添加QT+=serialport编辑界面文件,如下图所示。右击你的控件,如:按键,再点转到槽,就可以跳到该按键的槽函数。在widget.h中添加头文件,以及槽函数和私有的串口类的声明#include private s原创 2015-05-28 22:44:41 · 25664 阅读 · 9 评论 -
Qt Charts发布
在Windows下使用Qt自带的windeployqt.exe工具发布应用时,发现应用可以运行,但是什么东西都没显示。原因是使用了Qt Charts,而windeployqt.exe没有给我们添加qml的一些文件。我这里的Qt装在D盘,具体情况视自己的安装目录而定。把D:\Qt\Qt5.7.0\5.7\mingw53_32\qml里面的QtCharts文件夹copy到发布应用的文件夹里原创 2017-05-27 16:29:55 · 1442 阅读 · 2 评论 -
Qml的一些细节
1、除了main.qml文件名的首字母可以小写以外,其它的.qml文件名的首字母都要大写。2、在main.qml定义的(根item除外)MouseArea局部有效,在其它的.qml定义的MouseArea全局有效。3、帮助文档没列出的方法、成员变量、信号、槽,可以利用代码提示得到,如:TreeView的__currentRow。4、C++暴露方法给Qml时,传递的变量是强类型,而Qml原创 2017-04-23 17:30:59 · 1704 阅读 · 0 评论 -
Qml最小化窗口以及最小化到托盘
因为项目需求,要实现最小化到托盘。1、系统托盘。对于Qt5.7版本,需要自定义一个TrayIcon类继承QObject类,在TrayIcon类用新建一个QSystemTrayIcon对象。对于Qt5.9或以上的版本,可以直接使用Qml的SystemTrayIcon元素。2、窗口最小化。Qt生成的窗口,点击最小化,任务栏仍然出现该软件的标签。为了解决这个问题,我们需要捕捉到最小化原创 2018-01-10 10:47:42 · 4289 阅读 · 1 评论 -
Qt框架简介
很多嵌入式软件、桌面工具都是用Qt来开发的,包括Quartus和Cadence也有用到Qt。原创 2016-10-03 23:06:08 · 18064 阅读 · 6 评论 -
Qt Qml嵌入Widget以及Qml与Widget交互
这里是在Win10下,使用Qt5.7.0(cpp+qml)实现Qml嵌入Widget以及Qml与Widget交互。QQuickWidget类,可以解决此问题。1、先在pro是加入QT += quickwidgets2、新建QmlWidget类,并继承QWidget。main.cpp如下#include <QApplication>#include "qmlwidget.h"int ma...原创 2018-03-15 14:37:43 · 7863 阅读 · 1 评论 -
关于Qml ComboBox的问题
Qml里面的ComboBox控件,触发onCurrentIndexChanged事件是比较正常的。只不过,每次都要改变index才能触发事件,而在鼠标点击相同的index时,并不触发事件。这个时候,可以利用onPressChanged和onCurrentTextChanged事件,取代onCurrentIndexChanged事件,来完成鼠标点击相同index时,也能触发事件。原创 2017-06-26 21:10:41 · 5035 阅读 · 1 评论