
QT
blueman8888
这个作者很懒,什么都没留下…
展开
-
VS2022中通过VCPKG安装的ceres之后调试ceres的例程设置
在 项目-属性-C/C++ -命令行中添加。1.采用C++20.原创 2025-03-23 16:17:02 · 242 阅读 · 0 评论 -
VS2022中‘pwsh.exe‘ 不是内部或外部命令,也不是可运行的程序
vcpkg 是一个 C++ 库管理器,可以帮助你安装和管理 C++ 库。转载 2025-03-12 16:50:24 · 677 阅读 · 0 评论 -
git代理
国内git clone一个上的仓库太慢,经常连接失败。下面是解决办法。转载 2025-03-12 09:55:06 · 715 阅读 · 0 评论 -
在VS-qt的程序中,后期增加PCH预编译功能,提高编译速度
通过项目-属性-C/C++ 按图设置 预编译头-改为使用, 头文件-stdafx.h。stdafx.cpp中只需要保护头文件即可,主要作用用来创建pch文件。由于前期创建qt程序的时候为勾选pch功能,导致没有启动预编译的功能.在项目中增加2个文件 stdafx.h和stdafx.cpp文件。选中stdafx.cpp文件-右键,将预编译头-改为创建.这种情况下需要增加pch功能应该怎么做?高级- 按图添加 stdafx.h。stdafx.h增加qt常用头文件。原创 2025-02-19 16:25:37 · 313 阅读 · 0 评论 -
在VS中通过vcpkg包管理器来安装使用qt5
从 GitHub 克隆 vcpkg 存储库。存储库包含用于获取 vcpkg 可执行文件的脚本,以及由 vcpkg 社区维护的特选开放源代码库的注册表。要执行此操作,请运行:控制台复制vcpkg 特选注册表是一组数量超过 2000 个的开源库。这些库已通过 vcpkg 的持续集成管道进行验证,可以协同工作。虽然 vcpkg 存储库不包含这些库的源代码,但它保存方案和元数据,以便在系统中生成和安装它们。原创 2025-02-18 16:40:29 · 750 阅读 · 0 评论 -
当使用vcpkg安装的qt5时,在VS调用出现libcrypto-*-x64.dll不是有效路径时
将 libcrypto-*-x64.dll 中的*直接改为编译好的dll中的数字,笔者为3,所以改成了3就正常了。笔者电脑路径: G:\vcpkg\installed\x64-windows\debug\plugins。installed\<环境路径>\x64-windows\plugins\qtdeploy.ps1。找到vcpkg安装路径中。其他环境下的也照上面改即可.release版路径。原创 2025-02-19 19:31:18 · 425 阅读 · 0 评论 -
QWidget应用封装为qt插件,供其他qt应用调用
在之前的文章中,有介绍通过QProcess的方式启动QWidget应用,然后将其窗口嵌入到其他的qt应用中,作为子窗口使用.这篇文章主要介绍qt插件的方式将QWidget应用的窗口封装为插件,然后作为其他Qt应用中的子窗口使用.与主程序为同一个进程,免去了进程间繁琐的通信方式,在不同进程间通信时,需要有一套协议来保证数据的及时性及稳定性.比较繁琐,而插件的方式,通过插件接口文件来进行通信,在接口文件中定义API,原创 2024-12-27 16:26:48 · 482 阅读 · 0 评论 -
QCoreApplication, QGuiApplication, QApplication
QCoreApplication`, `QGuiApplication`, 和 `QApplication` 是 Qt 框架中用于创建不同类型的用户界面应用程序的基础类。- 如果你需要一个图形界面但是不需要传统的窗口系统,例如开发一个触摸屏设备上的应用,可以考虑使用 `QGuiApplication`。- 对于大多数需要图形界面的应用程序,尤其是那些涉及到窗口、按钮、文本框等元素的应用,应该使用 `QApplication`。- **用途**:适用于非图形用户界面的应用程序,如控制台应用或后台服务。原创 2024-11-27 08:48:38 · 348 阅读 · 0 评论 -
QTcpSocket客户端通过connectToHost设置失败
QAbstractSocket::UnsupportedSocketOperationError [ "对于这个操作代理类型是无效]2.或者通过 setProxy(QNetworkProxy::NoProxy) 为没有代理状态.网络代理软件打开了,就会报这个错误.1.关闭网络代理软件.取消代理.原创 2024-11-16 16:55:12 · 384 阅读 · 0 评论 -
QT中connect连接信号槽中使用lambda函数注意点
QThread::started()信号是在调用了m_pGenCode->start()时发送的,当start()执行时,会创建一个新的线程,同时发送一个started()信号.所以QThread::started()信号是在新的线程中发送的.当信号的发射位置(也即emit写的位置)与槽函数的接收者在不同的线程中时,默认就是队列的连接模式, 当发送信号时,将把信号发送到接收者线程的事件队列中,等事件队列执行到该信号时再执行槽函数.this在旧的主线程中, 所以默认是采用队列的连接模式.原创 2024-11-01 14:22:24 · 569 阅读 · 1 评论 -
QT信号槽使用时机
虽然信号槽可以降低各个对象之间的耦合性,但同时也带来了对象之间逻辑的跳转的突然性, 当系统庞杂时,这种逻辑的来回跳转带来的是系统的繁杂. 特别像GUI中,都是在一个主线程中操作,对于各窗口对象之间的低耦合性,其实也就不是很有需要.本身每个窗口之间都是相互关联的, 父子对象的析构方式就决定了GUI窗口之间高度关联的产生. 所以在GUI之间的操作,能省去信号槽时,尽量省去.主窗口A与子窗口11通信, 也可采用在子窗口1中采用获取子窗口11对象指针的方式调用子窗口11中的成员函数. 减少信号槽的使用.原创 2024-08-21 09:40:51 · 395 阅读 · 0 评论 -
qt几种线程的个人理解
将整个类对象全部移动到子线程中,主线程采用信号槽的方式与子线程交互,这个是官方推荐的使用方式. 对于需要整个应用生命周期的存在并实时执行的动作, 同时需要独享资源的,这个方式是比较推荐的, 比如串口通信中对单个串口的读写,单个运动控制卡中api调用, sqlite数据库读写时,对于这种必须同一时刻只能有一个操作对象的硬件,最好采用这种方式,通过信号槽的方式,由于子线程事件循环的存在,可以很轻松的线程同步问题.省去了线程锁.必须在run中执行, 交互性一般,适合程序比较简单的应用.原创 2024-08-02 08:34:10 · 339 阅读 · 0 评论 -
QTransform 解析
实例: 以点(100,100) 围绕点(200,150)旋转45°后的坐标, 采用QTransform 类方法实现移动变换.,将在旋转后的坐标系下面, X轴方向偏移200,Y轴偏置150.将以(-200,-150)为原点,旋转坐标系45°.采用一个QTransform 对象,通过连续的变换后,发现最后的结果与预先的不一致.采用多个QTransform 对象,保证每个变换对象的初始原点坐标始终是(0,0).也可以单独一步一步的变换后,将上一步的结果作为下一步的输入点.原创 2024-07-09 14:52:32 · 419 阅读 · 0 评论 -
C++虚函数拾遗
上述这2篇文章即可.在C++中,基类是虚函数,子类对象指针赋值给基类对象指针, 编译器怎么知道当前指针是子类对象还是基类对象的指针?在C++中,当基类包含虚函数时,编译器会在对象内存中创建一个虚函数表(vtable)。每个类(包括基类和子类)都有自己的虚函数表,表中存储了该类的虚函数的地址。当你将子类对象的指针赋值给基类对象的指针时,基类指针实际上指向的是子类对象的内存区域。由于对象内存中包含了虚函数表指针(vptr),编译器能够通过这个指针找到正确的虚函数表,并调用相应的函数。原创 2024-06-29 09:14:23 · 761 阅读 · 0 评论 -
将qt的子进程窗口嵌入qt的主进程主窗口中(方法二)
2.当主进程窗口是showFullScreen()状态时,子进程存在QDailog窗口,或者一些其他控件会使当前子进程窗口失去焦点的操作时,会出现window7桌面任务栏弹出的现象.win10下正常. 笔者通过判断当前操作系统版本,然后通过将任务栏的自动隐藏功能开启后,可通过软件层面技术性解决该问题.将任务栏自动隐藏功能开启后,即使存在弹出现象,也因为隐藏后,不会显示. 当软件退出时,再取消该功能.监控父窗口控件变化,变化则发送一个信号到 m_ChildVMWin 的槽函数,重新设置子窗口大小。原创 2024-06-16 15:44:08 · 1135 阅读 · 0 评论 -
Visual Studio C++官方博客
Visual Studio 中的 C++ 重构工具 - C++ 团队博客 (microsoft.com)原创 2024-06-12 17:04:13 · 182 阅读 · 0 评论 -
将qt的子进程窗口嵌入qt的主进程主窗口中(方法一)
在主进程中创建子进程,子进程也是通过qt新建的qwidget窗口的应用程序.其他槽函数,及析构时的函数。在main函数中添加如下。原创 2024-05-31 19:07:52 · 1292 阅读 · 1 评论 -
QGraphicsView缩放时,场景中图元线宽始终为1个像素
通过将图元的QPen 的setwidth(0) , 这样view在缩放的时候,图元的线宽始终是1个像素宽度,如果设置为setwidth(1) ,则只在初始场景下的线宽为1个像素,当缩放时,会更加场景的的缩放倍率来调整对应线宽。原创 2024-05-22 13:23:33 · 238 阅读 · 0 评论 -
QGraphicsView中鼠标位置图像缩放时不变
这意味着,如果用户正将鼠标指针悬停在视图的某个点上并进行缩放操作,那么这个点将保持在鼠标指针下方,视图其他部分将围绕这个点进行缩放。这样,用户调整视图窗口大小时,可以更方便地继续之前的查看或编辑操作,而不需要重新定位到特定的区域。,那么缩放时你可能会发现视图偏离了你希望仔细查看的区域。同样,在调整窗口大小时,如果视图内容相对于窗口的位置发生了改变,这可能会中断你的工作流,因为你需要重新找到那个特定的区域。的变换锚和调整尺寸锚到鼠标下面的操作,是一个很常见的模式,尤其在实现图形视图的缩放和滚动功能时。原创 2024-05-22 09:09:50 · 991 阅读 · 0 评论 -
结构体指针
这个操作符对于指针有两个不同的意义,当在申明的时候是申明一个指针,而当在使用p指针时是解引操作,解引操作右边是一个地址,这样解引操作的意思就是该地址内存中的数据。变量类型的出现是内存管理的必然结果,相信读者知道,所有的变量都是保存在计算机的内存中,既然是放到计算机的内存中,那必然会占用一定的空间。这里简单说了类型主要是为后面引出指针这个特殊性,在计算机中,将要运行的程序都保存在内存中,所有的程序中的变量其实就是对内存的操作。计算机的内存结构较为简单,这里不详细谈论内存的物理结构,只谈论内存模型。转载 2024-05-15 08:40:32 · 80 阅读 · 0 评论 -
如何将Git仓库中的文件打包成zip文件?
文件中被忽略的文件。如果您需要包含这些文件,您可能需要先将它们添加到仓库中,或者在创建zip文件后手动添加它们。这个命令允许您将任何git可访问的树或提交导出成一个归档文件。如果您想要打包特定的分支或标签,可以将。要将Git仓库中的文件打包成zip文件,您可以使用。如果您想要打包当前分支的最新版本,使用。可以采用powershell窗口。替换为分支名或标签名。原创 2024-05-12 13:57:33 · 1096 阅读 · 0 评论 -
QListView 事件过滤器中没有鼠标事件
如果您在尝试为QListView添加事件过滤器来捕获鼠标事件时遇到问题,这可能是因为QListView(或者更准确地说,它的视图部件)自身正在处理这些鼠标事件,从而阻止了事件传递到事件过滤器。在Qt的模型/视图架构中,视图通常会处理鼠标事件来实现项的选择、编辑等功能。原创 2024-05-11 14:48:10 · 437 阅读 · 0 评论 -
Qt自动形成父子关系的函数
在Qt中,父子关系对于对象的内存管理至关重要。当一个QObject派生的对象拥有一个父对象时,它会在父对象被销毁时自动被销毁。这种机制简化了内存管理,并防止了内存泄漏。原创 2024-05-09 15:02:06 · 660 阅读 · 0 评论 -
16进制字符串转32bit整形,浮点数,16bit整形
【代码】16进制字符串转32bit整形,浮点数,16bit整形。原创 2024-04-30 10:34:08 · 717 阅读 · 0 评论 -
Qt样式表
Qt样式表。原创 2024-04-28 11:19:16 · 347 阅读 · 0 评论 -
qt实现视频采集及显示相关思考
帧率太高后,就会出现在主界面线程中需要大量的时间来处理图片采集信号,很容易造成界面卡顿现象。为了解决上述问题,在保证采集帧率同时,也尽可能保证显示帧率,可在发送信号前面,增加一个全局变量来判断对应槽函数是否执行完成,只有在对应槽函数执行完成后,才能再次发送图片采集完成信号,通过该变量来控制发送信号的频率,这样既能保证采集帧率,也能保证显示帧率,同时还能保证界面流畅,因为在主界面事件循环中,图片采集完成的信号跟其他的界面信号比例差不多。执行起来基本就不会有卡顿现象了!原创 2024-04-26 22:31:01 · 767 阅读 · 0 评论 -
在VS中调试qt时,使用 QSqlDatabase出现Driver not loaded 的情况
问题解决:之前通过windeployqt将qt的环境已经加载到了debug里面了,但是sql模块是后面加上上去的,这时候qt加载dll的时候,默认只会从debug下搜寻dll,但是sql对应的dll却没有,这个时候就会报Driver not loaded错误,这时候可以将debug下所有文件删除,重新生成debug文件,这时候默认就会从qt安装路径搜寻dll文件,就不会报错了。现象:添加了sql模块,还是出现Driver not loaded错误。原创 2024-04-16 13:28:52 · 634 阅读 · 0 评论 -
Qt标准对话框中文qm文件加载
当使用qt标准对话框时,如QMessageBox,QFileDialog等时,默认都是英文。这时可以从qt安装路径下到一个translations的文件夹,里面就是qt所有的翻译文件qm文件。标准对话框主要使用qt_zh_CN.qm , 但是通过查看qt_zh_CN.ts文件里面只是4个文件,所以还得把这四个qm文件同时拷贝出来才能正常使用。从translations文件中找到这5个文件,拷贝到自己的应用程序下面即可。原创 2024-04-15 16:19:24 · 712 阅读 · 0 评论 -
QMessageBox自定义按钮与QFileDialog自定义
当在采用QMessageBox进行信息提示时,如果采用静态方式显示窗口,为保证窗口风格与父窗口相同时,可以把将父对象设置为当前窗口类对象时,里面的按钮大小也会跟随变化。这时候可能就出现yes,no按钮太小的情况。可通过自定义按钮的方式解决。原创 2024-04-15 10:50:38 · 739 阅读 · 0 评论 -
Qt中通过函数名(call-by-name)来调用COM的方式
工具获取任何 COM 对象及其子对象的 Qt API 文档;请注意,并非所有 COM 对象的 API 都可用。有时候通过dumpdoc工具不能获取到,则可以通过dumpcpp的方式获取。在qt中调用COM的方式,其中采用函数名的方式算是比较简单的,但是有时候如果没有提供qt版本的函数说明,却是很难调用。笔者的建议是通过dumpcpp的方式先将COM生成h及cpp来查询。通过h文件中函数名,就是call-by-name中的函数名。() API 通过名称调用 COM 对象的方法和属性。原创 2024-03-19 15:15:26 · 748 阅读 · 0 评论 -
QT中dumpcpp以及dumpdoc使用
在安装好了的qt电脑上,通过powershell窗口来实现,powershell比cmd要方便很多,可以复制粘贴,也可以直接将文件拉取过去。dumpcpp -o 生成的头文件及cpp文件的名称 -n 命名空间的名称 dll或者tlb文件路径也可以是clsid不过要加双引号。只能用clsid来生成,用dll和tlb都只有一点数据在里面。可以通过 dumpcpp -h 查看详细使用说明。qt中调用COM的方式方法有四种,参考解释。介绍dumpcpp的使用方法。dumpdoc的使用方法。原创 2024-03-15 09:48:01 · 957 阅读 · 0 评论 -
QT使用dumpcpp为COM生成h及cpp的方式,COM是C#的dll注册的
然后输入 dumpcpp tlb文件路径 ,回车即可 tlb路径直接将tlb文件拉进窗口即可自动生成。之后在dumpcpp.exe文件所在路径下将自动生成h及cpp文件。该文件即可以把COM组件,像普通的类进行调用。上述1,2两步不分先后,但是在编程之前,得把dll注册到系统中。在qt的安装目录下找到dumpcpp.exe文件,然后安装shift调用powershell窗口。当把这两个文件加载到C++项目中后,有可能会出现一些错误。在项目中需要添加COM容器模块QAxContainer。原创 2024-03-14 14:39:23 · 888 阅读 · 0 评论 -
Qt5+VS2013兼容XP方法
用Qt5+VS2013编译程序默认配置会在XP运行时报"不是有效的Win32程序"--->请手工修改这一行。工作需要必须要XP运行。原创 2024-01-05 13:45:45 · 772 阅读 · 0 评论 -
QLineEdit响应editingFinished实现只响应一次
QLineEdit中editingFinished槽函数会在按下enter时响应两次,分别是按下enter和失去焦点的时候,为了能让 QLineEdit只响应其中一次,需定义一个全局变量m_bFlagEnter保存是否enter是否按下,按下后,则在失去焦点的时候做对应判断,为ture则将m_bFlagEnter复位。为false则说明当前编辑框只是失去了焦点,执行需要做的动作即可。只有数据变化了,当失去焦点的时候才能响应editingFinished槽函数。原创 2023-11-23 09:36:07 · 694 阅读 · 0 评论 -
qt当通过子进程的方式嵌入窗口后,键盘按键响应不了怎么办?
案例问题:当通过QProcess类,创建了一个子线程后,再将该子线程中的窗口封装到QWidget后嵌入当前主窗口中后,当在操作主进程窗口后,再去操作子进程窗口时,这时出现子进程窗口无法获取到键盘消息。或者先操作子进程中的窗口后,再切换到主进程窗口中的编辑框也会失去键盘消息。分析:当在主进程中操作编辑框后,会将键盘事件捕获,而这时候去操作子进程的编辑框时,这个键盘事件已经被主进程独占了!也就导致了键盘失效。那能不能用释放键盘事件去实现了,经测试也不行。只在同一个进程中时有效。在不同进程中这种方式不行。原创 2023-09-02 07:54:46 · 1565 阅读 · 0 评论 -
QT子窗口为QWidget类型时,窗口背景不透明的实现方法
1。原创 2023-09-01 08:15:53 · 1067 阅读 · 0 评论 -
指针数组与数组指针,一维,二维数组指针
通过上述例子,可知(*Var+i), 相当于i行的首地址。*(*Var+i)相当于i行0列的地址,(*Var+i)与*(*Var+i)其实是一个地址。*Var 取数组首地址, *Var+i 对应数组后续的元素的地址, 则其值为*(*Var+i)。但是*Var 取数组首地址, *Var+i 对应数组各行元素的首地址,i为行序号。而要取对应行中各列的地址则通过 *(*Var+i)+j j为列序号。通过*(*Var+i)+j即获取到i行j列的地址。对应i行,j列值即为*(*(*Var+i)+j)原创 2023-08-31 13:46:09 · 328 阅读 · 0 评论 -
QT结构体中定义QString注意点
当需要进行多进程通讯时,结构体中出现字符串时尽量采用C++标准类型,尽量少用QT特有类型QString字符串,尽量采用char []类型替代,这样在多进程通讯时,可直接通过memcpy直接复制内存的方式,而不用担心内存异常问题。由于QString内部存在隐式共享及长度的不确定,容易导致内存错误。一般这种数据类型需要自己重载=才能实现复制功能。 在数据库读写时,也尽量采用标准C++类型来定义各字段。后面好处多多。 其他情况,则可以尽量选择QString,提高编程效率。原创 2023-08-19 09:06:59 · 1175 阅读 · 0 评论 -
Qt串口通讯MODBUS高级类使用说明
1。原创 2023-08-15 14:55:06 · 547 阅读 · 0 评论 -
QProcess创建子进程的方法,以及将子进程窗口嵌入主进程窗口中
1。原创 2023-08-15 14:52:11 · 577 阅读 · 0 评论