Qt开发
文章平均质量分 71
撬动未来的支点
空谈误国,实干兴邦
展开
-
使用request-try-notifyState流程实现UI控制与状态反馈的完整闭环
在Qt编程时,我们经常会在界面上添加一些按钮,当按钮被点击时,执行某段代码,例如显示一个对话框、关闭窗口,保存文件等等。这种由UI控件触发某种信号,通过信号槽触发目的代码执行的场景非常多。这种场景下,通常不需要关注目的代码的执行结果,仅仅通过信号触发槽即可完成任务。我们可以用两个单词来描述上述功能场景,即 request-do,即 UI 发出操作请求,触发代码执行。原创 2024-05-04 10:43:37 · 348 阅读 · 0 评论 -
关注公众号永久免费使用!跨平台软件“批量哈希大师“发布
由本公众号开发的校验和/哈希值计算工具正式发布。批量哈希大师是本公众号原创开发的第一款基于Qt的跨平台工具软件,也是本公众号对跨平台免费软件生态的发展做出的一份努力。作为软件开发人员,我们会经常使用哈希工具来校验文件内容是否被篡改。但我们经常遇到的一个问题是,很难找到一款能够支持跨平台,支持批量计算并长期维护改进的免费软件。批量哈希大师正是为了满足以上需求而被开发出来。原创 2024-04-19 00:09:35 · 254 阅读 · 0 评论 -
Qt小型项目模板
我们每次通过Qt Creator新建的项目,其目录结构都比较简单。通常情况下,我们都要重新创建常用的源码目录结构,这种做法含有较多的重复劳动,费时费力。同时,笔者发现,每个人创建的项目的源码目录结构,相比之下差异很大。因为每个人对解决某一问题有自己的想法和视角,所以组织代码的方式也不一样。但是,个性抽象的代码组织方式,可能会导致项目协作、项目维护上出现沟通问题。对于小型项目,采用常用的源码组织方式,建立通用项目模板,不仅可以提高效率,同时可以使源码结构更加清晰,提高项目的可维护性。原创 2024-04-13 10:49:30 · 219 阅读 · 0 评论 -
Qt桌面GUI软件基础测试参考手册V0.0.1发布
下载地址:https://gitee.com/pivotfuture/qt_gui_software_base_test_reference_manual/releases/tag/V0.0.1。本测试手册旨在指导开发者、测试人员,对Qt桌面GUI程序进行软件基础功能测试,帮助减少程序低级别的错误和BUG。一旦您的提议被采纳,您的名字将被写入到贡献者致谢列表中。开发者使用此手册,可以实现在开发阶段对所开发程序进行基础自测,减少程序 bug 数量,减少因排查问题而耗费的时间精力和资金成本。原创 2024-04-10 23:14:29 · 390 阅读 · 0 评论 -
【Qt基本功修炼】Qt线程的两种运行模式
QThread是Qt中的线程类,用于实现多线程运行。QThread有两种工作模式,即消息循环模式无消息循环模式两种模式分别适用于不同的场景。下面我们将从多个方面,讲解QThread两种工作模式的区别。在项目中,我们需要根据实际需求选择正确的线程运行模式,合理地实现软件功能,同时提高导致软件的稳定性和可靠性。以上是Qt线程的基本使用方法,可以满足基本的使用需求。但用起来还是稍显麻烦。原创 2024-02-01 21:27:23 · 1237 阅读 · 0 评论 -
【Qt】使用pri文件管理项目中的子模块
pro 文件是Qt的项目文件,里面包含了源文件路径、头文件路径、ui文件路径、资源文件路径、编译选项等诸多信息。当项目比较大时,软件中各个模块的代码文件路径、资源文件路径、编译选项都会写入到pro文件中,不仅导致pro文件会比较大,而且模块之间划分不清晰、耦合性强。如果想要移除、修改某个软件模块,则需要一番查找定位,非常不方便;同时,耦合性强可能会导致在修改某个模块时,错误修改了其他模块,影响其他模块的稳定性。解决此问题的方法,是使用pri文件对Qt项目分模块管理。原创 2023-09-29 21:39:52 · 1099 阅读 · 0 评论 -
【Qt】总体把握文本编码问题
对世界上所有符号、文字进行编号,产生一张字符表,这个表叫做“字符集”。这样一来,我们可以使用数字编号来表示字符,每个编号占用相同的字节数。因为世界上的字符很多,一般使用32位的无符号整型存储编号,总计大约可以表示42亿种字符。目前通用的字符集是Unicode字符集。字符集中,因为有的字符使用频繁,有的字符使用不频繁,使用相同长度的编号有点浪费存储空间。改进的存储方案类似于哈夫曼编码:将使用频繁的字符用更少的字节数表示,使用不频繁的字符,用较长的字节数表示。经过优化的存储方式,叫做“文本编码”。原创 2023-09-05 01:35:49 · 779 阅读 · 0 评论 -
【Qt调试技巧】如何在Release下调试Qt程序?
实现在Release下调试Qt程序,需要对构造系统进行配置。原创 2023-03-05 18:57:54 · 3511 阅读 · 0 评论 -
【已解决】解决Win7安装VS2013/VS2015结束时报错“无法建立到信任根颁发机构的证书链”的问题
本文提供了两种解决安装VS2013/VS2015过程中出现证书问题的解决方案。原创 2022-08-18 23:39:51 · 1559 阅读 · 0 评论 -
【Qt调试技巧】Profile配置使用及一些坑
介绍不知从哪个版本起,Qt Creator中的构建配置中,增加了一种新型配置,名叫“Profile”,如下图所示:官方对Profile的描述是:Profile是介于Debug和Release中间的一种配置。具体是什么意思呢?下表描述了三种配置的区别:配置类型特点Debug带调试信息,编译时不做优化。Profile带调试信息,编译时做一定优化。Release一般不带调试信息,可以根据优化选项做不同程度的优化。应用那么应该在什么场景下使用Profile构建配原创 2021-09-10 22:37:00 · 3812 阅读 · 0 评论 -
Qt中的私有信号
直接引用Qt文档中的描述:私有信号只能被响应,不能被用户代码来发射(emit)。这是一种对某些信号的权限控制,也就是用户代码没有权力“发号施令”,只能由Qt的类来发射,防止信号被”仿造“。...原创 2021-01-05 18:47:37 · 4315 阅读 · 2 评论 -
Qt中的角度和正方向描述清单
在Qt开发中,不同的API对应有不同的0度和正方向,本文做一个汇总,方便查阅。函数/模块角度描述画圆弧QPainter::drawArc3点为0度,逆时针为正向画弦QPainter::drawChord3点为0度,逆时针为正向画圆饼QPainter::drawPie3点为0度,逆时针为正向坐标旋转QPainter::rotate(qreal angle)顺时针为正QConicalGradient12点钟方向为0度,逆时针方向插值...原创 2021-08-18 16:03:30 · 893 阅读 · 1 评论 -
【GUI开发】图像处理类软件的浏览功能实现模型
图像处理软件包括但不限于:图片浏览器,2D地图浏览器、图片编辑器等软件。为了处理大分辨率图片,一般采用GDAL加载图像,GDAL可以动态加载图像的一部分,可以建立图像金字塔,优化加载速度。一般的图像处理软件都需要对加载的图像进行放大、缩小、平移操作。首先明确:放大是指图像细节增加,可见范围减少的一种浏览方式,缩小是指图像细节减少,可见范围增加的一种方式下面介绍如何实现。编写代码前,需要建立图像浏览所使用的观察模型。如下图所示:其中,显示窗口是指用于绘制当前浏览内容的窗口,观察区域是指,原创 2021-06-27 17:38:26 · 167 阅读 · 2 评论 -
【精华】掌握Qt调试技术
前言软件调试,是开发过程中必备的技能。通过调试可以发现软件存在的bug,即缺陷。调试可以帮助开发者窥探到软件运行过程中的详细状态,从而为消除bug提供重要信息。调试的英文是debug,前面的de在英文中表示“反对”,“消除”。本文将会介绍日常开发中常用的、也是一名合格的Qt开发人员需要掌握的Qt软件基本调试方法,并结合不同场景加以说明,帮助读者查漏补缺,打牢基本功。常用调试方法1. 基本调试方法1.1 以调试启动1.2 启动后再调试1.3 附加到进程2. 远程调试3. windbg调试4.原创 2021-08-30 16:57:01 · 5671 阅读 · 0 评论 -
Qt添加翻译文件
以在Qt Creator中开发为例:第一步在.pro文件中添加一行TRANSLATIONS += projectName_zh.ts 保存,执行一次qmake。注:ts文件是xml文件保存了需要翻译的信息。第二步选择菜单:工具->外部->Qt预言家->更新翻译。可以看到项目目录下生成了projectName_zh.ts文件。第三步使用Linguist(即Qt预言家)软件,打开projectName_zh.ts文件进行翻译。翻译完成后点保存,然后执行发布翻译。即会在相同原创 2021-01-25 22:06:43 · 3068 阅读 · 0 评论 -
解决:VS中进行Qt开发,编译时报错:打不开QWidgets.h等文件的问题
1. 先检查是否通过Qt VS Tools添加了Qt路径和配置了正确的Qt版本,这一步基本上都没问题。2. 再检查此项目是否配置了正确的Qt版本,右键项目,选择Qt Project Settings,选择你需要的Qt版本即可,不可以为空。3. 完成上面两步仍然会出现找不到Qt头文件的问题。原因是没有设置Qt Modules。同样在Qt Project Settings对话框中,有个Qt Mod...原创 2020-02-11 11:29:08 · 2575 阅读 · 1 评论 -
Qt添加翻译文件无效或部分无效
原因:QTranslator::load路径错误qApp->installTranslator调用时机应该在所有界面起来之前。原创 2020-04-03 13:06:31 · 3458 阅读 · 0 评论 -
如何在Qt中配置MSVC编译器链接器参数?
eeeee原创 2023-02-23 00:44:08 · 2946 阅读 · 0 评论 -
掌握Qt构造系统(二)软件部署
讲解Qt软件部署工具及流程。原创 2023-02-05 13:56:32 · 1060 阅读 · 0 评论 -
掌握Visual Studio项目配置【基础篇】
掌握Visual Studio项目配置原创 2023-01-03 00:51:32 · 4427 阅读 · 0 评论 -
掌握Qt构造系统
掌握Qt构建系统原创 2022-12-20 01:36:31 · 802 阅读 · 0 评论 -
【开箱即用】VMware Win7虚拟机下载
提供多种环境配置的Win7虚拟机下载。原创 2022-08-10 00:32:04 · 2767 阅读 · 0 评论 -
windeployqt.exe的使用与避坑(windows平台)
介绍windeployqt.exe是Qt自带的工具,用于创建应用程序发布包。简单来说,这个工具可以自动地将某程序依赖的库、资源拷贝到其所在目录,防止程序在其他电脑上运行报找不到库的错误。这里贴上官方文档:https://doc.qt.io/qt-5/windows-deployment.html原理windeployqt.exe的工作原理很简单,它会到当前的环境变量PATH配置的搜索路径中,查找应用程序所需要的库。使用正确的用法:1、先从开始菜单中打开对应版本的Qt命令行界面,如下图:2原创 2022-03-01 22:12:46 · 16836 阅读 · 9 评论 -
AutoCode For XML(XML解析代码生成器)发布
项目地址AutoCode For XML on Giteebug反馈、意见建议bug反馈、意见建议请直接在此项目主页上进行!版本更新AutoCode For XML v1.0.0发布啦!第一个发行版本,主要用于测试。下载地址:点我本工具由Qt未来工程师发布。...原创 2022-01-07 20:51:11 · 282 阅读 · 0 评论 -
Qt中标绘功能的实现方法对比
使用Qt开发桌面程序,经常会有标绘的需求,一般有以下几点:新建:圆、矩形、椭圆、文字标注,插入图像等;编辑:指对已标绘内容的属性编辑修改功能;删除:指对已标绘内容的删除功能;浏览:指提供对已标绘内容的平移、放大缩小等浏览操作。包含标绘功能的最典型的应用是地图标绘系统。一个简易的地图标绘系统demo如下图所示:Qt中,标绘功能有不同的实现方式,通常有以下几种。基于QPainter的面向过程的实现方式此种方式下,实现一个标绘系统,通常需要创建一个QWidget子类,在子类中实现鼠标、键盘等原创 2022-01-05 13:09:56 · 1272 阅读 · 0 评论 -
Qt生成的exe中为什么会带有不该有的盾牌?
参考为什么EXE文件出现了不该出现的“盾牌”什么情况下 exe 会自动加上 UAC 的盾标?原创 2021-11-08 20:38:31 · 397 阅读 · 0 评论 -
Qt中使用OpenSSL
概述OpenSSL官网OpenSSL官网:OpenSSL是一个开源跨平台的加密库,应用广泛。Windows提供了自己的一套加密认证API,感兴趣的话可以参考:Windows Authentication Overview。Qt官方文档:Secure Sockets Layer (SSL) ClassesAdding OpenSSL SupportAdding OpenSSL Support for Android网站内容为英文,阅读起来需要一些耐心。其中比较重要的信息有两点:Qt使原创 2021-10-26 18:10:09 · 12682 阅读 · 1 评论 -
【技术】Qt对话框讲解
前言Qt中对话框QDialog是几乎每个项目都会用到的GUI窗口对象。本文通过讲解QDialog及其子类在项目中经常被用到的功能点,帮助小伙伴们理解和掌握其使用方法。QDialogQDialog是Qt对话框类树中的基类,Qt为我们提供了很多QDialog子类,即标准对话框,实现了丰富的对话框功能。下面我们先看一下QDialog本身需要关注的一些问题。模态对话框一句话描述模态对话框:除模态对话框外,用户无法选择并操作其他窗口,只有关闭了模态对话框,用户才能操作其他窗口。下面的代码,用QDia原创 2021-08-29 19:25:16 · 1081 阅读 · 0 评论 -
【经验】Qt项目开发必备工具
在实际的项目中,除了需要掌握Qt开发框架本身,还需要掌握一些开发工具。这些工具能起到事半功倍的效果,甚至某些工具是开发不可或缺的。下面笔者就介绍一些常用的开发工具的用法及下载地址,希望对缺少实际项目经验的同学提供一些参考和建议。1. 文件搜索利器Everything软件介绍软件主页:https://www.voidtools.com/zh-cn/首先引用一下官方介绍:“Everything” 是 Windows 上一款搜索引擎,它能够基于文件名快速定文件和文件夹位置。“Everything”原创 2021-08-28 18:50:45 · 1300 阅读 · 0 评论 -
【探究】信号槽到底能不能有返回值?
【较真】信号槽到底能不能有返回值?前言Qt信号槽到底可不可以有返回值呢?问了下身边的同事,有的人说可以,有的人说不可以。在实际项目中,确实没看到过有人使用带返回值的信号槽,可以说存在感很低。平时大家工作也比较忙,所以也没有时间去较真信号槽到底能不能有返回值。今天就一起带大家较真一下,看一看信号槽能否有返回值。如果可以有返回值,那么又有哪些限制导致大家都不用它呢?提示:本文代码略多,但是都很简单,请耐心阅读。上代码新建一个Qt Widgets Application,在Qt为我们生成的主窗口.h文件原创 2021-08-22 20:36:51 · 1339 阅读 · 1 评论 -
【必知必会】pro文件及常用配置
前言笔者在工作中了解到,有部分同学对Qt的项目文件,即.pro文件的基本配置编写不是很了解。作为一名Qt工程师,.pro文件的编写也是必会的技能,本文对此进行一个讲解,并将相关资料做一个汇总。.pro文件的介绍.pro文件是Qt的项目文件,Qt允许我们直接编辑,不像Visual Studio基本上所有项目选项都需要界面来配置。Qt使用其自带的qmake.exe来解析.pro文件。.pro文件有自己的语法规则,所以学习起来需要一定的成本。目前我们只需要学习编写最基本的配置即可,根据二八定律,80%的情原创 2021-08-20 12:17:52 · 1468 阅读 · 0 评论 -
【基础】Qt-VS调试器下载与配置
前言因为MSVC版的Qt不自带调试器,所以在Windows上使用MSVC版的Qt进行开发时,需要配置调试器。本文讲解了在Windows下,下载和配置MSVC版Qt调试器的过程,并给出下载地址。调试器选择下表列出了不同平台下的调试器选择方案:平台调试器32位win7、xp系统windbg.exe 32位64位win7系统32位的Qt用32位的windbg.exe,64位Qt使用64位的windbg.exewin10系统Debugging Tools For Wi原创 2021-08-19 00:35:41 · 697 阅读 · 0 评论 -
QSplitter设置宽高比例的正确方法
QSplitter设置宽高比例的正确方法问题实际开发中,需要经常调整QSplitter中子窗口的宽度/高度比例。对水平QSplitter来说,是宽度比例;对垂直QSplitter来说,是高度比例。下面以水平QSplitter为例说明。我们首先应该会想起看看QSplitter是不是有设置比例的函数。查找文档,发现有一个setStretchFactor函数。经过尝试以后,发现无论如何设置,都不能获得想要的效果。没有想象的顺利,那么就需要仔细阅读官方文档。下面是官方文档对于此函数的描述:翻译过来意思是原创 2021-08-17 14:19:49 · 6929 阅读 · 4 评论 -
【精华】详解Qt中的内存管理机制
前言内存管理,是对软件中内存资源的分配与释放进行有效管理的方法和理论。众所周知,内存管理是软件开发的一个重要的内容。软件规模越大,内存管理可能出现的问题越多。如果像C语言一样手动地管理内存,一会给开发人员带来巨大的负担,二是手动管理内存的可靠性较差。Qt为软件开发人员提供了一套内存管理机制,用以替代手动内存管理。下面开始逐条讲述Qt中的内存管理机制。一脉相承的栈与堆的内存管理了解C语言的同学都知道,C语言中的内存分配有两种形式:栈内存、堆内存。栈内存栈内存的管理是由编译器来做的,栈上申请的内原创 2021-08-16 20:00:45 · 4881 阅读 · 0 评论 -
Qt学习资料汇总
1. 在线资源脚本之家在线手册:Qt 快速入门系列教程W3CSchool:Qt 学习之路2. 书籍资源链接:https://pan.baidu.com/s/12zoOQykCA-J8x_1FVahFWA提取码:关注公众号“Qt未来工程师”,后台回复“书籍”获取提取码。3. 官方资源Qt Assistant:安装Qt后,Qt自带的开发手册。同时也有在线版手册:Qt Assistant Manual。Qt Forum:Qt官方论坛,Home | Qt ForumQt Blog:Qt官方博原创 2021-08-10 19:37:21 · 260 阅读 · 0 评论 -
Qt Creator和Visual Studio双环境开发技能攻略
刚接触Qt开发时,大多数同学的第一行Qt代码是在Qt Creator中写下的。众所周知,Qt Creator是Qt官方提供的Qt集成开发环境[^1],提供了对Qt应用开发的全过程支持。也就是说,使用Qt Creator做Qt开发是完全够用的。不管是在Windows系统、Linux系统、苹果MAC系统,都可以使用Qt Creator来开发应用程序。以Windows系为例,既然使用Qt Creator能够胜任开发工作,那么为什么还要使用Visual Studio(简称VS)呢?主要有两个原因:有很多开发原创 2021-08-09 21:27:28 · 5420 阅读 · 0 评论 -
【Qt开发经验】Qt信号槽连接不成功问题原因汇总
目前遇到过三种情况会导致信号槽连接不成功,下面分别描述。信号槽函数签名不匹配。主要有: 参数类型不匹配,参数个数不匹配。拥有信号槽的类,没有声明Q_OBJECT宏。帮助手册里有相关描述,想要使用信号槽,必须加Q_OBJECT宏。连接方式为Qt::QueuedConnection时,参数类型没有注册。需要使用qRegisterMetaType(“TYPENAME”)来注册。...原创 2019-11-10 15:11:41 · 3095 阅读 · 1 评论 -
Qt实现QTextEdit背景透明
QTextEdit为什么要拿出来单独说,因为它继承自QAbstractScrollArea,一般的设置无效。滚动区域ScrollArea内部有一个widget,需要同时设置ScrollArea和viewport两个窗口才能实现透明。代码如下:m_text_editor->setWindowFlags(Qt::FramelessWindowHint | m_text_editor->w...原创 2020-04-04 16:50:57 · 2358 阅读 · 2 评论 -
彻底弄懂Qt的编码(汉字乱码问题及相关函数作用)
测试1新建test工程用于测试,main.c文件内容如下:#include <QCoreApplication>#include <QDebug>int main(int argc, char *argv[]){ QCoreApplication a(argc, argv); QString str_hanzi("百度"); // 汉字 QString str_ascii(原创 2016-09-09 11:05:06 · 37070 阅读 · 6 评论 -
Microsoft C 运行时库 (CRT) 参考
链接:https://docs.microsoft.com/zh-cn/cpp/c-runtime-library/c-run-time-library-reference?view=msvc-160重要文章:跨 DLL 边界传递 CRT 对象时可能的错误原创 2021-07-13 14:06:09 · 192 阅读 · 0 评论