![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
QT
秋月的私语
これは何(なん)のものですか?
展开
-
通过QScrollArea寻找最后一个弹簧并且设置弹簧大小
项目原因,最近需要通过QScrollArea寻找其中最后一个弹簧并且设置指针,因为无法直接调用UI,所以只能用代码寻找。主要参考了QTDesigner生成的代码,反向寻找,经过测试,以上代码可以正确找到最后一个弹簧。由于弹簧并非继承自QObject,所以无法使用findChild函数寻找。原创 2024-02-27 15:51:12 · 612 阅读 · 0 评论 -
Qt属性系统Q_PROPERTY的通俗解释
我们可以简单理解为QT巧妙地实现了反射机制,因为c++本身是不支持反射的,但是QT这么做似乎就实现了反射,为什么说是似乎呢,因为我理解的反射机制,应该还包含对于函数的调用,甚至是更复杂的调用,而目前的例子,似乎只是调用了属性,也就是修改部分变量的值,而没有能够实现调用内部对象函数的方法。比如上面的QSize,当然,我们可以通过约定的方式,比如把参数类型放在名称当中,但是这显然不是我想要的答案,我希望有更明确的方法来获取参数类型,而不是通过曲线救国。其他属性的设置,方法是类似的。原创 2023-03-17 15:43:07 · 1612 阅读 · 2 评论 -
解决VS2019+Qt5+Vcpkg工程无法调试但Release正常运行的问题
你当然可以沿着这个问题继续往下解决,但是我发现此时已经陷入死胡同,我只不过是想对新写的代码进行调试,其实对于qt部分使用debug或者release的库,我并不关心,而且因为我注意到release版本的程序正常运行,于是我进行了一个特别的尝试。即便找到了对应的 icudtd69.dll,加入到exe目录,再次windeployqt,错误依旧,此时我们得换一个思路了,编译Release版本,然后寻找对应的dll。接下来,尝试调试,为了看到调试效果,写了几行冗余代码,并且可以看到调试信息。至此,问题得到解决!原创 2023-01-03 11:20:05 · 2176 阅读 · 0 评论 -
QGIS中如何用代码实现隐藏某个图层
最近碰上这个需求,需要间断交替显示两个图层,以方便检查两幅图之间的变化,于是想隐藏某个图层,但实际发现,获得图层的指针之后,并没有visible相关的函数,也就是无法直接实现图层的隐藏。其中核心代码就是获取QgsLayerTreeLayer,然后设置显示与否。我想实现的效果如下,使用代码实现交替显示。...原创 2022-07-21 15:11:48 · 498 阅读 · 0 评论 -
Invalid URI for GeoPackage OGR provider
而经过测试,如果是斜杠,则保存正常,由此可以判断,是路径中的反斜杠导致了创建工程时无法识别。至此,如果必要的话,使用QdirToNativeSplash()函数即可解决问题。QGIS保存工程时碰到这个错误,经过排查,原来是路径问题导致的!当我把路径输入写作反斜杠的时候,保存工程时出错。...原创 2022-07-18 14:06:47 · 226 阅读 · 0 评论 -
请教关于变化检测的思路方向
最近,自己正在做基于传统图像处理以及深度学习的变化检测方向的项目,但是感觉思路比较受限,特此分享目前的项目进度以及存在的问题,希望有大佬可以帮忙指点一二。不知道大佬在这一方面能否指点一二,一个人做这个确实非常吃力,期待得到大佬的帮助,能够在思想上指点一二也是好的,上方代码注释中有联系方式,谢谢!基本思想是,基于像素的传统变化检测为基础,再判断两幅图上对建筑物检测的位置,是否重叠于基于像素的检测结果,得到初步的变化检测。目前感觉思路比较狭隘,况且深度学习检测速度太慢,实在是影响软件效率。...原创 2022-07-15 15:25:05 · 757 阅读 · 4 评论 -
QDialog执行accepted() accept()不退出
最近写QT对话框程序,发现一个奇怪的现象,明明是两个相同的对话框,点击了确认按钮,一个正常退出,一个怎么都不退出!原创 2022-06-29 15:06:17 · 2939 阅读 · 0 评论 -
链接前事件自动生成ui_xxx文件和moc_xxx文件
有时候使用vs并不能自动生成ui_xxx文件和moc_xxx文件,那么此时可以通过链接前事件自动更新文件。通过这样的设置,以后就能在编译的时候自动更新ui了。原创 2022-06-28 12:24:52 · 319 阅读 · 0 评论 -
QNetworkAccessManager内存泄露解决方案
该方案最初由浪迹天涯、四海为家 在我的文章《QNetworkAccessManager的奇怪内存泄露问题》的下面的评论中提出,个人亲测有效,为了造福更多的读者,这里直接写成文章分享,感谢该作者的无私分享。这个问题实际上是QNetworkAccessManager在按钮槽函数中内存泄露,现象表述在文章《QNetworkAccessManager的奇怪内存泄露问题》有详细说明。具体表现就是,同样一段代码,放在QWidget构造函数中循环运行,没有内存泄露的问题,但是放到Pushbutton按钮事件下循.原创 2022-05-20 16:51:06 · 1065 阅读 · 7 评论 -
vs2017调试时显示QString等变量的内容
VS2017默认安装Qt VS Tools之后,调试时看不到QString的内容,而只显示地址,如果需要显示地址,需要将//author:autumoon//联系QQ:4589968//日期:2022-05-18C:\Users\XXX\AppData\Local\Microsoft\VisualStudio\15.0_59808c01\Extensions\YYY目录中的qt5.natvis.xml复制到C:\Users\XXX\Documents\Visual Studio 201原创 2022-05-18 14:13:10 · 1100 阅读 · 1 评论 -
qDebug()重定向到界面控件
先看下效果,输出到textbrowser,也可以输出到任意输出控件。有时候将调试信息直接输出到界面更容易调试程序,因而有时候有这个需求。关键代码://author:autumoon//联系QQ:4589968//日期:2022-04-11#include "mainwindow.h"#include "ui_mainwindow.h"#include <QDebug>MainWindow::MainWindow(QWidget *parent) : Q原创 2022-04-11 15:32:22 · 1005 阅读 · 1 评论 -
QTextBrowser内容自动滚动
最近碰上这样的需求,需要QTextBrowser中添加内容的时候实现自动滚动,于是百度到一篇文章《Qt QTextBrowser内容自动滚动》,看文章中的效果图以为解决我问题,但是实测我所使用的QT中使用该代码无效,可以通过编译,但是没有效果。我使用的QT版本如下:于是继续寻找答案,总算在CSDN上找到了答案,原文现在找不到了,所以这里就不贴出地址了,我还记得是一个论坛讨论帖,不是博文。其实只有一句话即可解决问题,这可能是新版本Qt中更新的功能吧。直接上示例代码://auth.原创 2022-03-18 15:38:48 · 1909 阅读 · 0 评论 -
Qt基于QLibrary调用MFC生成的dll范例
直接上源代码://author:autumoon//联系QQ:4589968//日期:2022-02-28#ifndef HEARTBEATDLL_H#define HEARTBEATDLL_Hint HeartBeatDll(const char* szIp, const int& nPort, int* nCpuUsage, int* nMemUsage);#endif // HEARTBEATDLL_H实现文件://author:autumoon//联系Q原创 2022-02-28 15:57:59 · 470 阅读 · 0 评论 -
Qt如何在进度条上显示自定义文字
先看看效果:在上代码://author:autumoon//联系QQ:4589968//日期:2022-01-21 //添加一个HBox QHBoxLayout* hbl = new QHBoxLayout(ui->centralwidget); hbl->setGeometry(QRect(20, 30, 400, 40)); //添加多个进度条和文字 int nProgressBarCount = 7; for (int原创 2022-01-21 11:05:34 · 3555 阅读 · 0 评论 -
Qt下使用JQCPUMonitor监控CPU使用率
调用了JQCPUMonitor库,实现间隔一定时间,自动发出信号,使用了线程的方式,避免阻塞主线程,同时也提供了直接获取当前设置下的CPU使用率。下面是源代码://author:autumoon//联系QQ:4589968//日期:2021-12-27#ifndef CPUUSAGESIGNAL_H#define CPUUSAGESIGNAL_H#include <QObject>#include <QThread>class CPUUsageSigna原创 2021-12-27 16:43:35 · 1046 阅读 · 0 评论 -
Failed to create a timer (当前程序已使用了 Window 管理器对象
最近使用MFC调用Qt编写的带界面的dll,发现使用qtwinmigrate之后,非常容易出现各种错误,比如程序仍然不能正常退出等,尤其是释放和句柄类型的错误,对于代码的严谨程度提高了很多,这些是在单独写Qt程序的时候没有遇见的。比如这次遇到了这个错误,使用了数个QTimer之后,当MFC主程序退出时,出现:进而而导致MFC程序无法正常退出。在尝试了各种替代QTimer的方案之后,最终选择了使用QThread::sleep()函数代替某个大量重复调用的QTimer::singleShot(.原创 2021-12-14 10:56:46 · 2159 阅读 · 0 评论 -
使用qtwinmigrate解决MFC调用QT的dll无法正常退出的问题
之前写了一篇《MFC调用Qt使用MinGW编译的带界面的dll解答》,这一篇本来打算写如何隔离Qt的依赖dll到单独目录,但是有个更重要的问题需要解决,那就是如果使用那篇文章中的方法调用Qt的dll,会发现程序无法正常退出——即关闭了QT界面之后,无法正确FreeLibrary,MFC程序也无法正常退出(除非强行结束进程)。那么这个问题该如何解决呢,其实已经有很成熟的开源库qtwinmigrate给出了解决方案,目前测试Qt5.0可用,该库的下载地址为:GitHub - qtproject/qt-sol原创 2021-12-10 10:20:55 · 1569 阅读 · 0 评论 -
MFC调用Qt使用MinGW编译的带界面的dll解答
上一篇《MFC调用Qt使用MinGW编译的带界面的dll》中提出了需求,那么我们该如何解决这个问题呢?首先,我们对导出函数进行声明,如前面的文章所述,需要使用extern "C"的形式导出://author:autumoon//联系QQ:4589968//日期:2021-12-08#ifndef EXTERNCINTERFACE_H#define EXTERNCINTERFACE_Hextern "C"{__declspec(dllexport) bool WD_Initial原创 2021-12-08 10:21:32 · 768 阅读 · 0 评论 -
MFC调用Qt使用MinGW编译的带界面的dll出题
上上篇文章《MFC调用Qt下使用MinGW编译的dll》提到了MFC如何调用Qt的dll,但是因为没有界面,比较简单。为了能成功调用带界面的Dll,我们首先要创建带界面的Qt的Dll,具体方法我在上篇文章《如何使用QtCreator新建带界面的dll工程》详细说明了,按照步骤即可创建带界面的Qt编译的Dll工程,如下图所示。正确编译工程(使用64位MinGW的Releae版本编译),会得到如下文件:其Dll中包含的Qt界面如下图:点击确认和取消按钮,都会在上面的控件中输出响应的消息.原创 2021-12-07 14:48:11 · 791 阅读 · 0 评论 -
如何使用QtCreator新建带界面的dll工程
与QtCreator中新建普通dll工程,稍微有些区别,重要步骤已经截图并且标红。其他步骤采取默认设置即可。按照上述步骤,即可完成此工程。界面部分,则和普通的QWidget工程一样,按照需要进行编辑。完整代码:QWindowDll.rar - 蓝奏云文件大小:2.1 K|https://autumoon.lanzoux.com/iC6icxcgrgj...原创 2021-12-07 14:20:15 · 519 阅读 · 0 评论 -
MFC调用Qt使用MinGW编译的dll
最近因为项目需要,MFC调用Qt下使用MinGW编译的dll,从开始的调用基础函数,到后面调用Qt界面,到隔离Qt发布所需的dll到单独的目录,遇到了各种各样的问题,好在最终都顺利解决了,于是打算写一个专题讲述这个问题,由浅入深,特此分享,所有的工程都会完整提供,也是作为纪念,防止将来忘记了(虽然有代码备忘就是了)。首先,先从最基础,最简单的入手。第一步,创建Qt编译dll的工程,除了图中的选项选择c++ Library其他一路默认,生成一个名为EasyDll的工程。其中头文件和..原创 2021-12-07 10:52:10 · 1404 阅读 · 2 评论 -
Invalid parameter passed to C runtime function
最近使用Qt调用Qt生成的dll,发现这个错误。经过测试,发现是exe未及时更新导致的。有时候dll更新了,添加了新的库或者依赖等,但是exe调用程序未更新,则可能会导致此错误!更离奇的是,如果强行运行程序(不调试运行),程序仍然可以正常运行!我想这应该是忽略了错误,但是为了程序稳定,不建议如此操作。借用一张网图参考:实则,重新编译生成exe,即可排除此问题。...原创 2021-11-16 16:25:37 · 2742 阅读 · 0 评论 -
QObject: Cannot create children for a parent that is in a different thread.
这个问题的解决办法很多,按照提示,就是子线程中创建了某个类,然后parent类在另外一个线程中,这种是不允许的,所以也会导致子线程中的某些函数失效。那么这个问题如何解决呢?第一个办法就是,不要parent,让其成为一个孤立的对象,这时候就不会报这个错误了。第二个办法,如果非要parent,那就要让他们在同一个线程中,或者发送信号,这里正好提到我之前写过的一篇文章《Qt中代码在子线程中失效怎么办》,简单来说就是用信号的方法来避免不在同一个线程的问题。欢迎交流与讨论。...原创 2021-09-26 15:40:17 · 430 阅读 · 0 评论 -
Qt中代码在子线程中失效怎么办
最近遇到了一个情况,就是某个函数只能在主线程中生效,在子线程中,虽然执行了,但是不知道碰到什么问题,操作就是无法生效,好像线程阻塞了似的,那么这个问题如何解决呢?首先想到的办法就是查询为什么失效,但是因为代码在线程中好像被阻塞了,涉及的内容又很多,这条路不好走。于是我想到了另外一个办法,既然这个内容不能在子线程中执行,那我就让他在主线程中执行不就完了吗?于是,我把代码写到主线程类中,当然了,如果直接调用主线程类的函数,那实际上还是在子线程中执行,经过测试,确实无效。那么该怎么办?我突然想原创 2021-09-26 15:25:18 · 609 阅读 · 0 评论 -
基于Qt实现的局域网上传文件和下载文件
应某C友要求,写了这个局域网同步小工具,说是同步,实际上只是实现了文件的上传和下载,操作都在客户端,服务端只需要配置好同步目录就不用管了。先看下效果:工具的实现非常简单,实际上就是基于QTcp互相发送文件,那么主要问题就是,如何在客户端点击下载的时候,通知服务器传送数据给客户端,而这个就需要用到GitHub的一个轻量级开源库JQLibrary,这个库对于轻量级请求完全够用,非常感谢原作者的分享。服务器配置文件,配置好同步目录即可:其中nCmdPort为命令端口,nTransPor..原创 2021-09-26 14:59:54 · 3599 阅读 · 11 评论 -
QNetworkAccessManager的奇怪内存泄露问题
之前写过一篇文章《QNetworkAccessManager内存泄露问题的总结》,当时花了四五天,最后通过更新Qt版本解决了问题,而最近有小伙伴再次遇到了这个问题,本以为这个问题当时已经解决了,而经过几天的测试,发现这个问题以一种诡异的方式再次出现。具体表现就是,同样一段代码,放在QWidget构造函数中循环运行,没有内存泄露的问题,但是放到Pushbutton按钮事件下循环运行,却出现了明显的内存泄露!!具体代码,由于涉及项目隐私问题,这里隐藏了实际请求地址,确实需要测试的,可以与我取得.原创 2021-09-15 13:59:09 · 1035 阅读 · 5 评论 -
基于QT的客户管理系统CRM
朋友开店需要管理客户,比如客户资料,生日提醒,回访提醒等,本来这些内容都是写在纸质档案上的,但是不太方便,尤其像生日和回访这类,很容易忘记。于是我帮她们写了这款软件,参考了网上很多大佬们的资料,最终完全重写了本软件,纯c++,跨平台,使用Qt自带的数据库存储数据。***客户管理系统V1.0说明书目录***客户管理系统V1.0说明书... 1功能... 1说明... 1添加客户... 3修改客户... 4删除客户... 5查看/导入照片... 6筛选客户...原创 2021-09-03 15:37:01 · 1247 阅读 · 3 评论 -
MFC下调用Qt编写的含界面的dll
最近使用Qt编写了一个带界面的dll项目,使用Qt可以直接调用其导出的类,但是现在有个想法,如果使用MFC该如何调用Qt生成的dll呢?在网上搜索资料,找到的都是关于用Qt如何导出函数,然后调用的例子,想来也是,毕竟Qt和MFC是不同的框架,如果是Qt导出的类,MFC应该是无法直接调用的,所以退而求其次能够调用Qt导出的函数也是极好的。网上看到一篇《MFC 下调用Qt编写的含界面的dll》的文章,比较复杂,使用了qtwinmigrate,可能是因为版本的原因,新版本的Qt直接导出就可以使用了,我这里原创 2021-07-13 15:09:00 · 1249 阅读 · 1 评论 -
基于Qt使用线程池实现文件夹拷贝
上一次写了一篇多线程拷贝文件夹的文章,这次世界使用线程池吧,使用线程池可以避免创建和销毁线程的开销,效率进一步提升。先看看效果,这里展示的是终端版本的程序。main.cpp://author:autumoon//联系QQ:4589968//日期:2021-07-01#include <QCoreApplication>#include <QDir>#include "poolmanager.h"int getFiles(const QString&am原创 2021-07-01 11:01:38 · 440 阅读 · 0 评论 -
使用Qt实现多线程拷贝文件夹
这个是之前学习Qt的过程中写的代码,使用了多线程拷贝,同时支持网络路径的拷贝,实际上现在知道使用线程池是更好的选择,避免线程的启用和退出开销。不过当时作为学习来说,对于信号与槽等的知识还是加深了不少印象,这里直接贴出主要代码,供参考!#ifndef WIDGET_H#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACEnamespace Ui { class Widget; }QT_END_NAMESPACEcla原创 2021-06-25 10:52:24 · 1207 阅读 · 0 评论 -
Windows下使用Qt封装Widget到dll
最近做了一个测试,发现windows下封装Widget到dll,与linux下的步骤虽然相同,但是却不能实现完全跨平台,例如在Linux下创建的动态库工程,在Windows下虽然可以正常编译,但是无法正确调用,表现就是可以正常运行但是wuf...原创 2021-06-21 10:46:14 · 501 阅读 · 0 评论 -
Linux下使用QT封装界面到动态库中
本文主要参考了《Qt如何使用lib库封装界面》中提到的原创 2021-06-16 16:31:08 · 531 阅读 · 0 评论 -
定义QTimer引发的异常:double free or corruption (!prev)
错误提示:double free or corruption (!prev)16:15:03: 程序异常结束。16:15:03: The process was ended forcefully.原创 2021-06-08 16:28:36 · 1991 阅读 · 3 评论 -
发生了快速异常检测失败,将不会调用异常处理程序
最近调试一个项目,发现任务在多线程执行时,每次退出程序会出现标题中的错误,出错代码如下: //线程池 PoolManager* manager = new PoolManager(folder_path, max_thread.toInt(), startPage, endPage); manager->moveToThread(&worker_thread_); connect(manager, &PoolManager::new_progress原创 2021-04-23 14:50:40 · 20430 阅读 · 0 评论 -
解决Network Error(99): TLS initialization failed!
最近用QT尝试https请求,于是需要ssl支持,但是一直出现Network Error(99): TLS initialization failed!错误!解决办法:Qt5.12版之后C:\Qt\Qt5.14.1\Tools\QtCreator\bin 下的libssl-1_1.dll 各 libcrypto-1_1.dll拷贝到 C:\Qt\Qt5.14.1\5.14.1\mingw73_32\bin 目录下注意发布的时候也需要带上这两个文件,也就是将libssl-1_1.dll 各原创 2021-04-22 14:58:01 · 2470 阅读 · 1 评论 -
qtcreator界面不显示中文如何解决
Win7x64系统,安装了Qt的某些版本出现QtCreator界面无法正常显示的问题,如下图的红框部分:已知在我的计算机上安装必定出现问题的版本有:qt-opensource-windows-x86-5.9.9和qt-opensource-windows-x86-5.14.1。那么,这个问题如何解决呢?如果你愿意尝试,可以通过安装可能的中文字体或者更换QtCreator版本解决,但是我尝试了几个版本,问题依旧,不过总算是找到了一个解决办法。那是之前在Csdn上搜索到的一个解决方案,我本来想找原创 2021-04-08 15:31:33 · 2779 阅读 · 2 评论 -
QNetworkAccessManager内存泄露问题的总结
经过了四五天的不断测试和排查,最终总算解决了问题,QNetworkAccessManager内存泄露已经确认为官方bug,确认有问题的版本为qt-opensource-windows-x86-5.14.1.exe,这实在是让我没想到的!升级Qt版本后,代码未做任何改变,还是间隔120ms连续不断请求,稳定运行一晚上,终于没有出现内存增长的问题!这次的事件,仍然给我提个醒,虽然可能性小,Qt官方包括微软官方IDE仍然是可能出现bug的。多查阅资料,不仅仅要查阅国内的诸如Csdn和博客网之类的,还要原创 2021-04-08 14:59:30 · 1630 阅读 · 4 评论 -
QNetworkAccessManager内存泄露问题的后续
被这个问题困扰了几天,都想换个http库了,但是为了尽量使用纯Qt代码,于是只能继续尝试,改进类。修改思路:1.外部传递manager,公用一个,避免反复申请,析构。2.取消继承自QObject,避免未知问题。3.注意断开信号与槽(因为不知道内部信号与槽源代码,怀疑这个也可能导致内存泄露)4.该关闭的关闭,该删除的删除#ifndef CLIENTPROGRESS_H#define CLIENTPROGRESS_H#include <QObject>#includ原创 2021-04-02 16:09:10 · 791 阅读 · 0 评论 -
Qt的QNetworkAccessManager的使用和防止内存泄漏
使用范例官方就有,但是官方的范例并不适合反复调用,比如我每隔1秒钟就要调用一次,一旦次数过多,时间过久,则会出现明显的内存泄露,最终导致应用崩溃。那么这个问题我是如何解决的呢?在搜索了网上许多参考资料之后,最终似乎解决了问题,至少目前应用没问题。那么,先来看看代码://author:autumoon//联系QQ:4589968//日期:2021-03-31 QString strCmdUrl = QString("http://") + strHost + ":" + QString::原创 2021-03-31 11:03:11 · 2830 阅读 · 2 评论 -
基于QT的局域网数据传输管理系统
1.扫描局域网客户端2.检测客户端是否符合传输条件3.传输数据4.执行客户端可执行文件5.显示客户端进度6.增加了中断传输功能7.本项目跨平台,纯QT代码,有诸多细节设计因为项目原因源代码无法公开,确实需要的可以参考我之前发布的老版本,这次的更新使得项目更完善而已,主要功能并没有发生变换。界面设计确实挺花时间,尤其还要支持尺寸变化的时候。本文章仅仅作为纪念。...原创 2021-03-12 12:00:13 · 440 阅读 · 0 评论