- 博客(29)
- 收藏
- 关注
原创 QT界面设计器应用
创建自定义对话框实现部分通用的样式和接口创建自定义部件使用界面设计器来实现具体用户界面Form File里添加Widget的UI文件添加自动生成的ui_Widget头文件创建对应的UI对象form.setupUi(this);...
2021-02-05 14:39:19
418
原创 显卡驱动查看工具
前言对于搞图像编程的小伙伴来说,需要经常跟显卡驱动打交道。也就经常要使用显卡驱动的相关工具来检查驱动工作是否正常。下面就简单介绍一下常用的几种显卡驱动工具介绍的工具只针对NVIDIA显卡,AMD显卡类似NvOptimusTestViewer可以实现查看哪些程序使用了独立显卡进行渲染,并显示在列表中,并且可以设置刷新的间隔时间请勾选“显示使用NV独立显卡渲染的程序”,并将刷新速度调整到合适的数值NVIDIA驱动控制面板可以通过全局设置,来控制所有程序是通过NV卡或者Intel卡来执行
2020-09-11 15:26:46
810
原创 第一个完整示例
背景参考书目:计算机图形学(第四版)对应章节:第三章,第一个完整示例注意事项gluOrtho2d:这里指定的显示范围可以小于等于窗体尺寸,但是不能大于。glutInitWindowSize:这里指定的窗体尺寸不包括标题栏glutInitWindowPosition:这里指定的窗口坐标也不包括标题栏...
2020-08-06 15:27:25
124
原创 超大数值的计算
背景项目中需要计算大数字。使用计算器,可以看到正确结果大概为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
1821
原创 vs2017对类以及源码文件进行重命名
背景当我们需要对已定义的类进行重命名的时候,VS里可以很方便的对包含类的同名代码文件也进行重命名。具体步骤使用ctrl+shift+h,打开全局替换界面。将待修改的类名替换为新名称VS检测到有同名的代码文件,自动提示你是否需要对文件也进行重命名,点击确定即可。记住,一定要重启VS!...
2020-04-16 14:48:50
1132
原创 QWebEngineView异步获取加载图片的尺寸
背景之前写过一篇帖子,描述使用QWebView来显示气泡弹框。最近因为工作需要,QT版本升级到了5.12.4,原先的QWebView不能用了,改用新的QWebEngineView来显示气泡弹框。思路描述QWebEngineView的使用方式改为了异步,这点跟以前有很大不同。所以不能再通过以前的接口获取已加载网页的尺寸大小。这里采用的解决方法,是自己拼接对应的html字符串,通过JS调...
2020-04-10 10:57:31
886
2
原创 QFileDialog静态接口调用系统资源管理器崩溃问题2
问题回顾之前写过一篇博客,介绍自己遇到的关于调用系统资源管理器崩溃的问题,详情请见:https://blog.youkuaiyun.com/weixin_44231643/article/details/100015536在这篇文章中,我提到这个崩溃现象可能跟某些软件冲突相关。事实上也确实如此,在部分客户电脑上是跟百度输入法冲突。打开win10的事件查看器,可以看到都是百度输入法报的警告信息。新的问...
2020-03-30 17:12:56
703
原创 编译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
4644
5
原创 浮点数的比较
前言由于计算机中采用的是二进制编码来表示数字,因此浮点数在计算机中的存储并不是精确的,例如在经过大量计算后,一个浮点型的数3.14在计算机中就可能存储为3.1400000000001,也有可能存储为3.1399999999999,这种情况下会对比较操作带来极大的干扰(因为C/C++中的“==”操作是完全相同才会判定为true)。于是需要引入一个极小数eps来对这种误差进行修正。下面介绍...
2020-03-11 14:56:07
794
原创 QDateEdit设置为空
背景使用QT的日期控件时,比如QDateTimeEdit、QDateEdit、QTimeEdit,它们都自带一个默认值。但是在某些情况下,我们不想要这个默认值。通过现有接口没法实现我们的需求,必须通过继承重构的方式实现参考链接下篇博客给出了完整的实现代码,本文仅对该博客做简单说明原博客是以QDateEdit举例,QDateTimeEdit和QTimeEdit的实现应该类似http...
2019-11-04 10:39:23
4264
4
原创 VS2017快捷键重置
问题说明从VS2012升级到VS2017,中间因为操作的不熟悉,对默认的快捷键进行了一些误操作。实际使用中发现,改动后的快捷键不好用,于是寻求解决方案重置方法选择工具->选项选择环境->键盘,选择Visual C++ 6键盘映射方案,点击重置...
2019-10-31 11:19:45
2312
原创 qt编译oracle数据库驱动爬坑
背景由于工作需要,需要连接oracle数据库。但是查询资料,发现QT默认没有提供对应的oracle数据库驱动oci,只能自己从源码编译。查阅相关资料,基本都是qt creater编译oracle数据库驱动。步骤简单,也没有什么问题。想着我这边没有安装qt creater,但是可以将对应的Pro工程转换为VS下的解决方案再进行编译,按照这个思路,准备开工。详细编译步骤编译环境:qt5....
2019-10-23 09:00:59
306
原创 QFileDialog静态接口调用系统资源管理器崩溃问题
问题现象调用QFileDialog的静态函数(比如getFileName)在客户环境下会有随机崩溃现象,无法捕获异常,也没有任何提示信息。根据网页资料 https://www.cnblogs.com/zi-xing/p/6217172.html 推测,怀疑是静态函数调用的系统资源文件管理器跟某些软件冲突导致。解决方法就是使用QT封装的文件对话框代替系统资源文件管理器。解决方法简单写法...
2019-08-22 15:07:44
4006
3
原创 验证文件32位还是64位
概述有时候安装程序打包的时候,需要将一些依赖库一起打包进去。防止应用程序在其它环境下无法启动。这时一般会从C:\Windows\System32或者C:\Windows\SysWOW64文件夹内拷贝我们需要的依赖库。不能简单的认为System32里的文件就是32位的,SysWOW64文件夹的文件就是64位的。通过对部分DLL文件测试,发现System32里的文件其实是64位的,而SYSWOW...
2019-08-20 13:30:42
261
原创 生成GDAL帮助文档
说明GDAL源码中已经按照doxygen标准生成了注释,为了方便查阅,可以使用doxygen工具将程序中的注释转换为说明文档。下载安装程序doxygen-1.8.15-setup.exegraphviz-2.38.msihtmlhelp.exe生成具体步骤选择源码中的doxygen文件,显示目录如下output选项,选择生成chmchm具体配置(切换到Expert选项...
2019-07-30 10:41:41
606
原创 VS2017配置OpenGL开发环境(GLUT)
环境介绍参考书目:计算机图形学 第4版VS版本:2017OpenGL环境:GLUT库准备GLUT库下载网址https://www.opengl.org/resources/libraries/glut/glut_downloads.php#3.6分类将下载后的文件,安装不同类型,创建dll lib include/gl子文件夹配置VS工程目录配置头文件附加包含目录:...
2019-07-04 06:56:38
3273
原创 使用QWebView显示弹窗的效果优化
具体优化思路对于html字符串的解析,不再按照xml格式进行解析。因为xml格式要比html格式严格,如果按照xml格式解析,容易丢失数据引入一个第三方库htmlcxx,专门用于解析html标签对于img标签中的src属性,进行特殊处理如果是在线网址和带file:///前缀,直接跳过如果是相对路径或者绝对路径,增加file:///前缀以及拼接绝对路径将处理后的html标签作为...
2019-06-22 11:30:51
933
1
原创 获取硬件信息
获取硬件信息调用WindowsAPI实现获取硬件信息获取物理内存大小这里只解析了物理内存大小,其余内存信息可以按需要提取对物理内存大小做了向上的取整默认返回的内存大小为Byte,这里转换为了GB #define GB (1024*1024*1024) MEMORYSTATUSEX statusex; statusex.dwLength = sizeof(st...
2019-05-21 10:03:40
1023
原创 控制多线程暂停、继续、退出
前提针对继承QThread类,重写run接口方式创建的多线程线程退出对于正在运行的线程,如果想要退出,QT5提供了封装好的接口:requestInterruption和isInterruptionRequested。不再需要自定义互斥量和bool类型的退出标记。退出之前调用requestInterruption,在线程内部的循环操作前判断isInterruptionRequest...
2019-05-16 10:24:44
988
原创 QT实现对文件的Base64加解密
使用QT实现对文件的Base64加解密GitHub下载地址:https://github.com/caochuanlin/encryptfile对本地文件进行加解密入参和出参是本地文件,可以使用这两个接口提供参数,是否删除输入文件 bool EncryptFileFromLocal( const QString& strOriginalFilePath,const ...
2019-04-22 16:40:08
1959
原创 自定义进度条,支持显示浮点数
思路QT原生的进度条默认只支持显示整型值,这里重新封装了进度条,支持显示浮点数。内部同时设置了进度条样式支持显示提示信息GitHub下载链接:https://github.com/caochuanlin/progressbar/头文件class CProgressBar: public QProgressBar{ Q_OBJECTpublic: CProgressBar(...
2019-03-26 17:42:08
1140
1
原创 封装sqlite工具类
思路解释关闭数据库的时候,需要用局部变量保存QSqlDatabase对象,不然在移除数据库链接的时候会报内存泄漏警告在进行增删改查之前,首先调用HasValidConnection判断是否有有效的数据库链接,然后GetConnectionName,利用返还的数据库链接名再获取数据库链接对象。注意,这里也需要使用局部变量来保存数据库链接,不然最后移除的时候可能会报内存泄漏在进行增删改查之前,...
2019-01-16 16:52:31
820
原创 使用批处理和事务来优化插入大量数据到数据库的效率
基本思路使用批处理一次执行一定数量的插入语句(满足一定数量就执行,不能到最后一次性全部运行,避免内存不足)commit之前需要开启事务,执行插入语句之前也需要开启事务。事务的作用,就是减少频繁的文件操作耗时。可以直接调用数据库链接的开启事务方法,也可以通过数据库驱动来开启和关闭事务参考链接https://blog.youkuaiyun.com/rl529014/article/details/7...
2019-01-07 17:48:10
1834
原创 使用GDAL实现常用图像格式(JPEG、PNG32、PNG24)之间的转换
主要思路使用GDAL库实现图像类型转换功能读取原始图像的数据,返回图像的宽、高、通道数量创建内存驱动器,将原始图像的数据写入到内存驱动器中使用CreateCopy接口,将内存驱动器的数据生成要求的jpg或者png图像读取和写入的时候,都是按通道从0 0位置开始一次性读取图像宽和高数量的像素。按照源图像的通道数量作为间隔拷贝原始数据到内存驱动器中。参考网址https://w...
2019-01-02 18:05:56
6588
原创 qt删除已有布局
删除已有布局实现删除已有的界面布局,方便动态更新界面主要思路遍历布局,判断每一个item的类型:widget就直接删除,布局的话就先删除布局内的widget,其余类型都直接移除。注意:这里没有考虑那种复杂的布局嵌套情况。需要考虑的可以自行修改(递归形式)。widget的父控件需要先置空(参考网上的教程,没有测试)。 void ClearLayout() { ...
2018-12-25 10:44:03
9580
5
原创 qt删除非空文件夹
删除非空文件夹qt提供的API只能删除空目录,对于非空目录就无能为力。简单实现了删除非空目录,具体代码如下。主要接口RemoveAllFiles:实现删除指定目录下的所有文件。包括文件和文件夹,bForce这个参数决定是否删除只读文件。SetFilePermissions:修改文件权限。如果要删除只读文件,必须先把文件权限修改为只读。RemoveFilesInDir:调用...
2018-12-25 10:25:21
459
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人