QT
XINGTECODE
这个作者很懒,什么都没留下…
展开
-
Qt 如何多个项目共用相同代码
传统的做法是:生成静态库或者动态库,然后在各个项目中引用进来。无论是静态库还是动态库,都需要进行预先的编译,拷贝头文件那些操作。或者,有些工具类代码,也是多个项目可以共用的。只要这样,就可以愉快地使用了,不需要再搞那些静态库和动态库,即可实现一处编写,多处使用,一次修改,同时生效。在其他地方发过这篇文章,为方便大家百度搜索,在这里重新发下,希望能帮到你。这种代码最好是一次修改,可以在各个项目同时起作用的。1、在项目文件外面,新建一个文件夹,存放共用的代码。3、使用文件的时候,引入上层目录的头文件即可。...原创 2022-08-12 19:49:07 · 1033 阅读 · 0 评论 -
电脑自动裁床计料工具
自动裁床工具,计料原创 2022-07-06 08:32:41 · 211 阅读 · 0 评论 -
Qt5解压zip压缩包的技术总结
最近做了一个 海盗王自动更新工具,需要用到解压标准压缩包的功能。原意是先从网络上下载一个压缩包到程序目录,然后展开压缩包,覆盖文件夹和文件即可。但是Qt下做这个不容易。1、网上都是说用Quazip这个库,但这个库需要自己编译的;2、Quazip有依赖其他的压缩库,这下更麻烦了。自己弄了很久,参考了很多人的方法,最后还是跑了起来。其实最后就是2个dll放到程序目录下就行了:1、在pro文件中添加引入:INCLUDEPATH +=./zipCONFIG(debug, debug|rel原创 2021-02-21 15:53:04 · 1516 阅读 · 0 评论 -
Qt正在开发一个海盗王更新工具
正在用Qt5开发一个类似官方的海盗王游戏更新工具,只需要配合网站就能完成及时更新,不需要手动下载更新文件。还没开发完成,留意回帖会提供下载地址。如下图:原创 2021-02-10 21:47:18 · 202 阅读 · 2 评论 -
Qt 5.14.2 mingw73_32_static 静态库
Qt提供的最后一个离线安装包是自带了Qt 5.14.2版本。之前一直在网上找Qt 5.14.2 mingw73_32位的静态库,但是没有网友提供,只下载到了5.12.9静态版本的。5.12.9版本的跟5.14.2版本的有些函数不兼容,5.14.2的有些函数在5.12.9下没法编译通过,需要修改,这点代码量大的情况就非常糟糕。后来看到有个网友发了一个Qt 5.14.1 编译mingw73_32的教程,看了一下,也不难。但是他没有提供下载,有点可惜。于是自己下载了python,perl等安装,借用同事的原创 2021-01-28 10:27:29 · 1336 阅读 · 6 评论 -
基于Qt5开发的海盗王GM通用编辑器工具,技术要点总结
Qt5开发工具软件有以下优点:1、有专门的UI设计工具,用鼠标拖放即可。虽然功能没有VS2019那么强大,但是也为所见即所得,大大减少开发时间;2、控件自适应windows风格,这点比MFC做的要好;3、运行速度快,效率高,安全性也非常好。之前用C#开发过一个“海盗王物品编辑器”。由于C#的DataGridView只能显示数据,缺少携带数据的功能,数据修改和更新的时候有点麻烦。QTableWidget的QTableWidgetItem、QCombobox等除了显示数据外,还可以另外携带数据,这点原创 2021-01-23 15:38:48 · 892 阅读 · 1 评论 -
海盗王怪物和掉料查询工具V1.0 For 混沌界版
本人在2005年大学二年级的时候就开始玩海盗王。那时海盗王刚公测没多久,推广人员每个宿舍都派发了一张游戏光盘。当时的海盗王画面精美,又是3d的游戏,吸引了大群大学生玩。我们班那时就有好多人通宵挂机玩。当时能与之媲美的3d网络游戏寥寥无几,堪称精品。后来由于各种原因没有继续玩下去。毕业后,进入了IT行业,陆陆续续都有玩一下,但是玩得不多。到现在,十多年过去,自己都已经结婚生子了。回首当初,真的是一个经典的游戏,只可惜今时不同往日,已不复当年的激情,也找不到当年的同伴了。好在混沌界接过了火炬,让经典得原创 2021-01-04 15:12:15 · 2185 阅读 · 2 评论 -
Qt5.12.9 mingw73_32_release静态编译库使用方法
之前一直在折腾Qt的mingw32版静态编译,也下载过源码自己编译,但是由于某些不知道的原因没有成功。正准备放弃时,无意中找到这个5.12.9的release版已经编译好的静态库。开始配置的时候没有跑成功,后来又在网上找下参考,竟然能编译成功了,真是意外。为了方便还在苦苦折腾的朋友,现在把具体方法写出来给大家参考。静态库我已经拷贝一份到自己的网盘了,见下面链接:下载地址:链接:https://pan.baidu.com/s/1OBr2FWbVo2IAZQJaIODDTQ提取码:9aga环境:原创 2020-12-19 09:57:06 · 1346 阅读 · 4 评论 -
Qt多线程如何在关闭窗口时正确退出
当我们在跑非常耗时的多线程任务时,如果用户点击了关闭主窗口按钮,此时不处理的话,它虽然关闭了主窗口,但是程序其实会一直在跑的,还没有真正退出的,在任务管理器里还可以看到它,而且在debug窗口也会看到还在跑。怎么办?解决方法:1、窗口构造函数添加:this->setAttribute(Qt::WA_DeleteOnClose,true); this->thread = new QThread(this); //窗口关闭会自动释放资源this->thread->setPr原创 2020-12-15 20:23:58 · 6889 阅读 · 0 评论 -
Qt多线程总体效率测试结果
在实际应用中,因为要执行多线程统计数据,开始的时候,只跑1条线程,发现统计时间过长,后来又换成了线程池,由于CPU限制,最大跑到4线程,发现统计时间并没有变短。开始怀疑是代码没写好,但是反复修改后,发下也没有什么效果。最后,只能测下多线程效果。测试方法:头文件:#ifndef ZZCTHREAD_H#define ZZCTHREAD_H#include <QThread>class zzcThread : public QThread{ Q_OBJECTpublic原创 2020-12-12 16:23:58 · 1185 阅读 · 0 评论 -
Qt多线程传递自定义数据类型
在使用Qt开发过程中,经常是获取输入数据,UI线程显示处理状态,然后开启一个线程去计算数据,有时传递的数量量大,而且需要传递自己定义的数据类集合时,如果直接通过参数传递,会很麻烦的。Qt跨线程传递参数,不是你想传什么就什么,它需要转为Variant。自定义数据类时,需要你自己去转换,它不会自动处理。有一个办法,可以绕开这个坑,这就是用静态变量先保存起来,转到多线程后,在从静态变量里读取过来。过程如下:1、暴走前,先获取数据,保留静态变量里;GlobalData::emplist = emplist原创 2020-12-07 20:15:33 · 700 阅读 · 0 评论 -
Qt全局信号槽绑定和派发
参考了网友的改成的。实现全局信号槽绑定和派发消息。在不同窗口之间更新数据。经过实际开发使用验证,证明是有效的,请放心使用。头文件:#pragma once#include <qobject.h>class MyobesrverApater;struct relationData{ QString type; QObject *receiver; MyobesrverApater *ob;};class MyobesrverApater : publ原创 2020-12-01 19:32:36 · 1977 阅读 · 1 评论 -
Qt编译后的代码是否安全
今天用IDA把Qt的Debug和Release模式下生成的exe进行了反汇编,想看下里面伪代码是什么样的。结果发现,两者差异是完全不一样的。差别:1、Debug模式下,编译后的exe体积巨大,里面的伪代码跟源代码几乎完全一样的,类名和方法名都完全看得到,所有的处理逻辑都看得到。如果把这样的exe程序发出去,无疑是异常灾难。如果里面保存有数据库密码那些,轻松就得到,非常非常的不安全。2、Release模式下,情况非常好,跟MFC编译后的代码一样的,类名和函数名都隐匿了,里面都是直接的汇编代码,完全看不原创 2020-11-27 15:26:59 · 1725 阅读 · 3 评论 -
Qt判断文件是否被占用,是否可修改
Qt操作文件的类是QFile和QFileInfo。这2个类都没有明确给出API如何判断一个文件是否被占用,是否能被修改、删除等。网上也没有人发在Qt下如何实现的。由于自己需要使用这个功能,没办法,只有自己想办法。想来想去,也没有好主意,只能来硬的。实现如下://文件存在,且被占用,返回truebool GlobalFunc::isFileUsed(QString fpath){ bool isUsed = false; QString fpathx = fpath + "x";原创 2020-11-24 15:39:21 · 3955 阅读 · 2 评论 -
Sqlite日期和时间处理技巧
由于Sqlite没有DateTime数据类型,不能直接保存日期和时间。解决方法:用字符串类型Text来代替。1、因为涉及到日期和时间对比,这个可以直接在sql中对比的,不需要转成具体语言中的日期类来比较。2、需要使用全日期和时间样式,如:2020-08-09 07:03:04这样才能比对,不能采用短日期格式,这样比较的结果不是你想要的。按照这个方法使用,是完全可以替代DateTime数据类型的。感觉不到有任何差别。下面是实际项目中的数据库截图:...原创 2020-11-21 11:11:26 · 1907 阅读 · 0 评论 -
Qt输出PDF排版的技巧
最近需要用Qt输出pdf文件,参考了一些网友的使用方法后,终于正常输出文件并显示正常了。下面是效果图:总结如下经验:1、Qt输出pdf文件非常简单,比C#要简单太多,只用到2个类QPdfWriter 和 QPainter。QPdfWriter 用于创建pdf,QPainter类既可以输出文本,也可以输出线条,可以设置文本字体和大小,线条也可以设置粗细,而且设置非常方便。2、写完一页后,pWriter->newPage();又可以开始新的一页。这里有2中方法:1)是先提出数据,用一个数据类原创 2020-11-20 16:10:58 · 2620 阅读 · 2 评论 -
Sqlite数据库压缩问题
之前在使用Access数据库的时候,发现随着增删操作后,体积会越来越大,需要定期清理,有点烦。后来切换到Sqlite后,以为没有这种情况,但是使用一段时间后,也有这个问题,也需要定期清理。以前使用mysql,从来没听说有这个问题。或许,这是此类没有独立服务进程的数据库的通病。在Qt或者其他语言中,压缩Sqlite数据库的方法如下:1、直接执行数据库查询,执行语句为一句话:VACUUM运行后就把Sqlite数据库的缓存数据清空,体积立即只剩下基本数据了。灰常简单!...原创 2020-11-14 15:45:46 · 1724 阅读 · 1 评论 -
Qt5开发的验厂考勤工资系统-计时计件综合版
利用Qt5开发的社会责任(人权)验厂考勤工资系统,计时计件综合系统。适用于BSCI、Sedex 、WCA、WRAP、TARGET等,对于一些品牌的验厂,如沃尔玛等,同样适用。对于一些比较奇葩的要求计件的客户,一样适合。系统特点:1、同时满足计时计件的要求,灵活,不需要把计时的管理人员和计件的员工分开两套系统来做。2、巧妙的排班、计件工序自动分派、自动生成考勤工资,只需要简单配置好基础数据,换间工厂只需复制一份,稍作修改即可。3、基于C++的Qt5、免安装数据库SQlite开发,高运行效率,多工厂原创 2020-11-11 14:52:40 · 436 阅读 · 1 评论 -
Qt生成随机数的技巧
Qt可以以时间为种子,生成0 - N范围内的随机整数。QTime time;time= QTime::currentTime();qsrand(time.msec()+time.second()*1000);使用例子:int n = qrand() % 1000; //产生0-999随机数重点:1、经过实践,要在循环外面设置种子,循环的时候用qrand()函数获取随机数。2、千万不能在循环内部设置时间种子,因为循环一次时间太短,会产生大量重复的值,重要的说三遍,有大量重复的值!这样是没原创 2020-11-09 20:04:39 · 5360 阅读 · 0 评论 -
Qt垂直布局的1个技巧
当我们要在容器中固定宽度的2个QWidget,窗口变宽时,都靠左不动,高度随高度变化时,需要使用容器的 垂直布局 来设置。但是会有个问题,当2个QWidget固定宽度后,父窗口变宽时,会自动拉开相互的距离。这肯定是不符合我们的预期要求的。怎么办?重点来了->只需要在他们的右边,拖多一个QWidget进来,默认参数就行,不动它。什么都不设置的QWidget是透明不可见的,好像就不存在一样,会自动适应布局改变高宽的。这个很有用。如下:完美解决了。这叫,不懂的真弄死人,懂的好简单的。原创 2020-11-05 20:07:05 · 1583 阅读 · 0 评论 -
Qt和MFC的对比
之前用MFC做过游戏外挂,勾住游戏窗口,调用系统接口,直接读取内存的数据,很容易实现。现在用Qt写桌面应用程序,不用MFC写。对比二者后,得出以下结论,或许对新学者有用:1、MFC是封装了WIN API的,里面很多数据类型、头文件等,都是直接沿用WIN API的,所以会经常看到DWORD、WORD、HWND等这样的数据类型。需要有比较好的WIN API基础,看起来才不那么费劲。MFC可以静态,也可以动态编译,对于做外挂这些系统依赖比较大的比较好做。2、Qt是比较抽象的封装,日常使用开发桌面程序时,基原创 2020-11-03 11:11:02 · 8756 阅读 · 1 评论 -
Qt 遮罩层,等待后台处理动画效果
当后台需要大量处理数据,前台要显示等待界面时,这个就很有用。完全挡住界面上的内容,后面有半透明遮挡层,不能点击操作后面界面,用户不能自己取消等待界面,防止误操作。并且窗口大小变化时,自动适应界面变化,不阻塞窗口移动和放大缩小,非模态的。不是C#里面那种窗口截图的烂效果,真遮罩,真背景半透明。需要配合多线程使用,前台显示等待界面,后台线程处理数据,当处理完毕,通过信号槽发消息通知前台取消等待状态。...原创 2020-10-30 09:17:57 · 4517 阅读 · 12 评论 -
Qt读写Excel文件,Qt xlsx
Qt下读写Excel文件,网上推荐是适用QAxObjectQAxObject *excel = new QAxObject;excel->setControl(“Excel.Application”); //连接Excel控件但是这个用法有问题,当机器没有安装Office的时候,是不能调用成功的,即使安装了WPS和VBA也一样不行。现在越来越多的电脑都装WPS,不装Office了。所以,能不依赖Office才是最好的。找了一下,发现只有Qt xlsx这个东西比较多人用。也能跨平台使用,不过原创 2020-10-30 08:58:22 · 4001 阅读 · 3 评论 -
Qt5浮动提示,自动消失
Qt5下的浮动提示框。浮动在窗体中间,停留1秒后,自动向上渐变消失。请发邮件lixiaoxi_3878@qq.com效果如下:原创 2020-10-29 17:37:49 · 573 阅读 · 1 评论 -
Qt开发验厂计时计件系统
利用Qt5开发的验厂系统,计时计件综合系统。还在努力开发中,哈哈。如果你有想法,请发邮件lixiaoxi_3878@qq.com部分功能见下图:原创 2020-10-26 20:18:18 · 156 阅读 · 0 评论 -
Qt分页组件
这个分页组件是参考了其他网友的代码,修改而成。大家分享,就不添加引用出处了,请见谅。效果如下:鼠标移上后会改变样式:使用方法:1、含三个文件,在Qt Creator中直接添加现有文件进去即可,感觉比C#简单多了,C#不能直接添加复用,真烦。2、在QTabalWidget下,添加一个QWidget容器,采用垂直布局,然后在构造函数中添加分页组件进去,并连接好信号槽出来页码变化。//分页pn = new PageNavigator(100);pn->setTotalNum(564原创 2020-10-26 14:57:06 · 1753 阅读 · 3 评论 -
Qt 5.14.1静态编译设置
参考了下面链接网友的设置方法,静态库也是他编译好的,提供百度云下载,非常感谢他的无私奉献精神,已经给了点赞!VS2017+QT5.10编译QT静态库静态库下载地址如下:下载链接:https://pan.baidu.com/s/1mhSDvhI 密码:fwyu我电脑安装的是win10 64位 + vs 2019 + Qt creator 4.11.11、下载他编译好的静态库,在D盘建一个qt文件夹,把下载的库解压到这个文件夹内。因为他们编译的时候,一般都是设置d盘,而一般人的电脑都有d盘的。刚好我的原创 2020-10-05 19:10:49 · 1521 阅读 · 3 评论