
QT
caochuanlin0123
这个作者很懒,什么都没留下…
展开
-
QT界面设计器应用
创建自定义对话框实现部分通用的样式和接口创建自定义部件使用界面设计器来实现具体用户界面Form File里添加Widget的UI文件添加自动生成的ui_Widget头文件创建对应的UI对象form.setupUi(this);...原创 2021-02-05 14:39:19 · 424 阅读 · 0 评论 -
界面设计器与自定义控件
项目介绍使用QT界面设计器结合自定义控件,提高QT界面开发效率。原创 2021-01-25 15:17:09 · 177 阅读 · 0 评论 -
超大数值的计算
背景项目中需要计算大数字。使用计算器,可以看到正确结果大概为42亿。但是使用代码计算,发现结果错误。计算代码如下:其中,quint64是QT中定义的数据类型。在64位系统下相当于unsigned long long,占用8字节总共64位。quint64 nResult = 65536 * 65536;分析按照正常分析,65536 * 65536 为2的32次方,对于有64位空间的quint64应该可以正常显示。但是结果却不对。使用sizeof查看,quint64确实占用8字节原创 2020-07-06 15:57:42 · 1824 阅读 · 0 评论 -
QWebEngineView异步获取加载图片的尺寸
背景之前写过一篇帖子,描述使用QWebView来显示气泡弹框。最近因为工作需要,QT版本升级到了5.12.4,原先的QWebView不能用了,改用新的QWebEngineView来显示气泡弹框。思路描述QWebEngineView的使用方式改为了异步,这点跟以前有很大不同。所以不能再通过以前的接口获取已加载网页的尺寸大小。这里采用的解决方法,是自己拼接对应的html字符串,通过JS调...原创 2020-04-10 10:57:31 · 889 阅读 · 2 评论 -
编译QtWebEngine模块支持音视频播放
背景由于QT自带的QtWebEngine模块不支持音视频的播放,如果想播放MP3、MP4等格式的文件,必须自己编译QtWebEngine。本文编译的QT版本为5.12.4,存放路径为C:\Qt\Qt5.12.4\5.12.4\msvc2017_64本文默认编译的是64位版本,32位版本暂不考虑具体编译步骤安装Python本地先安装Python(>=2.7.x)并确保添加到了...原创 2020-03-21 15:40:46 · 4655 阅读 · 5 评论 -
浮点数的比较
前言由于计算机中采用的是二进制编码来表示数字,因此浮点数在计算机中的存储并不是精确的,例如在经过大量计算后,一个浮点型的数3.14在计算机中就可能存储为3.1400000000001,也有可能存储为3.1399999999999,这种情况下会对比较操作带来极大的干扰(因为C/C++中的“==”操作是完全相同才会判定为true)。于是需要引入一个极小数eps来对这种误差进行修正。下面介绍...原创 2020-03-11 14:56:07 · 796 阅读 · 0 评论 -
QDateEdit设置为空
背景使用QT的日期控件时,比如QDateTimeEdit、QDateEdit、QTimeEdit,它们都自带一个默认值。但是在某些情况下,我们不想要这个默认值。通过现有接口没法实现我们的需求,必须通过继承重构的方式实现参考链接下篇博客给出了完整的实现代码,本文仅对该博客做简单说明原博客是以QDateEdit举例,QDateTimeEdit和QTimeEdit的实现应该类似http...原创 2019-11-04 10:39:23 · 4271 阅读 · 3 评论 -
qt编译oracle数据库驱动爬坑
背景由于工作需要,需要连接oracle数据库。但是查询资料,发现QT默认没有提供对应的oracle数据库驱动oci,只能自己从源码编译。查阅相关资料,基本都是qt creater编译oracle数据库驱动。步骤简单,也没有什么问题。想着我这边没有安装qt creater,但是可以将对应的Pro工程转换为VS下的解决方案再进行编译,按照这个思路,准备开工。详细编译步骤编译环境:qt5....原创 2019-10-23 09:00:59 · 309 阅读 · 0 评论 -
QFileDialog静态接口调用系统资源管理器崩溃问题
问题现象调用QFileDialog的静态函数(比如getFileName)在客户环境下会有随机崩溃现象,无法捕获异常,也没有任何提示信息。根据网页资料 https://www.cnblogs.com/zi-xing/p/6217172.html 推测,怀疑是静态函数调用的系统资源文件管理器跟某些软件冲突导致。解决方法就是使用QT封装的文件对话框代替系统资源文件管理器。解决方法简单写法...原创 2019-08-22 15:07:44 · 4022 阅读 · 3 评论 -
使用QWebView显示弹窗的效果优化
具体优化思路对于html字符串的解析,不再按照xml格式进行解析。因为xml格式要比html格式严格,如果按照xml格式解析,容易丢失数据引入一个第三方库htmlcxx,专门用于解析html标签对于img标签中的src属性,进行特殊处理如果是在线网址和带file:///前缀,直接跳过如果是相对路径或者绝对路径,增加file:///前缀以及拼接绝对路径将处理后的html标签作为...原创 2019-06-22 11:30:51 · 938 阅读 · 1 评论 -
控制多线程暂停、继续、退出
前提针对继承QThread类,重写run接口方式创建的多线程线程退出对于正在运行的线程,如果想要退出,QT5提供了封装好的接口:requestInterruption和isInterruptionRequested。不再需要自定义互斥量和bool类型的退出标记。退出之前调用requestInterruption,在线程内部的循环操作前判断isInterruptionRequest...原创 2019-05-16 10:24:44 · 992 阅读 · 0 评论 -
QT实现对文件的Base64加解密
使用QT实现对文件的Base64加解密GitHub下载地址:https://github.com/caochuanlin/encryptfile对本地文件进行加解密入参和出参是本地文件,可以使用这两个接口提供参数,是否删除输入文件 bool EncryptFileFromLocal( const QString& strOriginalFilePath,const ...原创 2019-04-22 16:40:08 · 1962 阅读 · 0 评论 -
自定义进度条,支持显示浮点数
思路QT原生的进度条默认只支持显示整型值,这里重新封装了进度条,支持显示浮点数。内部同时设置了进度条样式支持显示提示信息GitHub下载链接:https://github.com/caochuanlin/progressbar/头文件class CProgressBar: public QProgressBar{ Q_OBJECTpublic: CProgressBar(...原创 2019-03-26 17:42:08 · 1147 阅读 · 1 评论 -
封装sqlite工具类
思路解释关闭数据库的时候,需要用局部变量保存QSqlDatabase对象,不然在移除数据库链接的时候会报内存泄漏警告在进行增删改查之前,首先调用HasValidConnection判断是否有有效的数据库链接,然后GetConnectionName,利用返还的数据库链接名再获取数据库链接对象。注意,这里也需要使用局部变量来保存数据库链接,不然最后移除的时候可能会报内存泄漏在进行增删改查之前,...原创 2019-01-16 16:52:31 · 822 阅读 · 0 评论 -
使用批处理和事务来优化插入大量数据到数据库的效率
基本思路使用批处理一次执行一定数量的插入语句(满足一定数量就执行,不能到最后一次性全部运行,避免内存不足)commit之前需要开启事务,执行插入语句之前也需要开启事务。事务的作用,就是减少频繁的文件操作耗时。可以直接调用数据库链接的开启事务方法,也可以通过数据库驱动来开启和关闭事务参考链接https://blog.youkuaiyun.com/rl529014/article/details/7...原创 2019-01-07 17:48:10 · 1845 阅读 · 0 评论 -
qt删除已有布局
删除已有布局实现删除已有的界面布局,方便动态更新界面主要思路遍历布局,判断每一个item的类型:widget就直接删除,布局的话就先删除布局内的widget,其余类型都直接移除。注意:这里没有考虑那种复杂的布局嵌套情况。需要考虑的可以自行修改(递归形式)。widget的父控件需要先置空(参考网上的教程,没有测试)。 void ClearLayout() { ...原创 2018-12-25 10:44:03 · 9584 阅读 · 5 评论 -
qt删除非空文件夹
删除非空文件夹qt提供的API只能删除空目录,对于非空目录就无能为力。简单实现了删除非空目录,具体代码如下。主要接口RemoveAllFiles:实现删除指定目录下的所有文件。包括文件和文件夹,bForce这个参数决定是否删除只读文件。SetFilePermissions:修改文件权限。如果要删除只读文件,必须先把文件权限修改为只读。RemoveFilesInDir:调用...原创 2018-12-25 10:25:21 · 461 阅读 · 0 评论