- 博客(210)
- 资源 (2)
- 问答 (3)
- 收藏
- 关注
原创 MFC编程
本文介绍了MFC编程的基础知识和操作流程。首先讲解了如何创建MFC单文档工程和对话框工程,详细说明了工程中的主要类(应用程序类、框架类、视图类和文档类)及其功能。接着演示了在视图类中响应鼠标消息的方法,并对比了模态和非模态对话框的实现方式。文章还介绍了对话框属性的设置、控件的添加方法,以及如何创建新的对话框并为其添加关联类。最后通过具体代码示例展示了模态对话框使用DoModal()方法实现,非模态对话框通过成员变量和ShowWindow()方法实现的区别,帮助读者快速掌握MFC界面编程的基本技巧。
2026-01-19 15:13:26
655
原创 MFC学习记录
本文介绍了MFC程序的基本结构和消息处理流程。首先通过Win32创建MFC程序的步骤,展示了MFC比Windows API更简单的窗口创建方式,并指出MFC程序的入口是InitInstance()而非main函数。然后详细讲解了MFC消息映射的实现方法:1)在类中声明消息映射宏;2)在源文件中定义消息映射;3)声明和实现消息处理函数。文章提供了完整的示例代码,包括鼠标点击和键盘输入的事件处理,帮助理解MFC的消息响应机制。最后指出这些内容为后续MFC编程奠定了基础。
2026-01-16 17:31:16
442
原创 QML基本元素
元素可以被分为可视化元素与非可视化元素。一个可视化元素(例如矩形框Rectangle)有着几何形状并且可以在屏幕上显示。一个非可视化元素(例如计时器Timer)提供了常用的功能,通常用于操作可视化元素。现在我们将专注于几个基础的可视化元素,例如Item(基础元素对象),Rectangle(矩形框),Text(文本)Image(图像)和MouseArea(鼠标区域)。Item(基础元素对象)是所有可视化元素的基础对象,所有其它的可视化元素都继承自Item。基础元素对象(Item Element)
2026-01-16 10:46:45
113
原创 自定义消息提示框
这段代码实现了一个确认对话框功能。使用QMessageBox创建一个提示框,询问用户是否要从FPP更新数据到数据库。对话框包含"确定"和"取消"两个按钮,当用户点击"确定"时调用updateFromFpp2DB()方法执行更新操作,点击"取消"则输出调试信息。对话框具有WA_DeleteOnClose属性,确保在关闭时自动删除。整个交互通过信号槽机制实现,操作完成后调用deleteLater()清理内存。
2025-12-09 14:17:11
132
原创 使用Redis实现MySQL的数据缓存
本文介绍了使用Redis实现MySQL数据缓存的架构方案。该架构通过Canal监控MySQL的binlog变更(增删改操作),由Canal客户端解析数据后,通过代理程序将变更同步到Redis缓存。当MySQL不可用或负载过高时,应用程序可直接从Redis获取最新数据,提高系统可用性并降低数据库压力。需要注意的是,RedisQL模块需要单独编译。整个方案实现了MySQL数据的实时缓存更新,有效解决了数据库单点故障和性能瓶颈问题。
2025-07-25 16:46:58
501
原创 Qt Mysql linux驱动编译
【摘要】本文介绍了在Linux系统下编译Qt连接MySQL数据库驱动的方法。当出现"QMYSQL driver not loaded"错误时,需手动编译MySQL驱动。主要步骤包括:修改mysql.pro工程文件配置路径、调整qsqldriverbase.pri文件、使用qmake生成Makefile,最后通过make命令生成libqsqlmysql.so驱动文件。编译过程中需指定MySQL的头文件路径(/usr/local/mysql/include)和库文件路径(/usr/local
2025-07-25 16:36:38
438
原创 qt控制台程序与qt窗口程序在读取数据库中文字段的差异!!巨坑
Qt控制台程序与GUI程序在处理中文编码时存在差异,导致数据库查询出现乱码。主要原因包括:默认编码处理方式不同、输出环境差异以及文本编解码器设置不同。GUI程序自动处理UTF编码转换,而控制台程序依赖系统终端编码设置。解决方法是在Windows系统中添加SetConsoleOutputCP(65001)设置控制台UTF-8输出,并使用QTextCodec设置UTF-8编解码器。Linux系统默认使用UTF-8,无需额外设置。
2025-06-03 17:07:17
441
原创 QMetaObject调用对象函数
使用QMetaObject的invokeMethod调用对象函数,可以通过预设的值来实现,对象函数的自动调用。比如说我需要给对象的姓名,性别,年龄复制。那么我只需要传入三个值就行了。就能实现函数的自动调用,1.定义一个people类。
2024-11-01 14:12:20
518
原创 QT国际化,语言翻译
打开zh_hans.ts文件,将你需要翻译的地方,删除属性type=“unfinished”,然后写上你的翻译最后保存文件。所谓发布翻译,就是使用lrelease工具将ts文件转换输出不包含多余信息的qm文件(qm文件是二进制文件,非文本文件)。打开linguits工具,点击文件,选择你的zh_hans.ts文件,会出现如下的弹窗,点击确认。lupdate就是用于扫描pro文件中指定的代码或UI文件中被tr包装起来的文本。然后选择你需要翻译的地方,输入你想翻译的文字即可,翻译后记得保存。
2024-10-31 13:39:20
987
原创 如何在Linux环境中的Qt项目中使用ActiveMQ-CPP
之前在Linux下的qt程序中使用activeMQ的时候也是用了很多时间去研究,本来想的是好好记录一下,但是当时顾着写代码。很多细节也不想再去走一遍了。大概写一下怎么使用就行了。注意:一定要先开启服务器。
2024-10-31 11:10:50
643
1
原创 linux 运行 activemq,Linux 安装 ActiveMQ 服务器详解
这个需要注意的是要注意jave环境的版本。建议不要下载太新版本的服务器。需要根据自己的java环境版本来。也许做C++的会问,为什么我做一个C++的项目要用到java环境,这个我刚开始也很懵。喉咙才知道是运行这个服务器需要Java环境。Linux下安装和更新java环境应该都不难。点击past releases 就可以选择以前的版本了。然后就可以安装参考的文章去配置和运行它了。
2024-10-31 10:46:10
461
原创 存储系统概述
地址从A0000H到CFFFFH的内存,共有()字节,若用存储容量位64k x 8bit的存储器芯片构成该内存空间,至少需要多少片?eg:主存与cache的地址映射方式中,(A)方式可以实现主存任意一块装入cache中任意位置,只有装满才需要被替换。在计算机的存储系统体系中,cache是访问速度最快的层次(若有寄存器,则寄存器最快)空间局部性:刚被方问的内容,临近的空间很快被访问。eg:以下关于cache的叙述中,不正确的是?空间局部性:用到的地址,相邻的地址频繁使用。
2024-09-22 17:38:29
778
原创 流水线--基础知识
一条指令的执行过程可以分解为取指,分析,和执行三步,在取指时间t1 = 3🔺T,分析时间t2 = 2🔺T,执行时间t3=4🔺T,若按串行方式执行,则10条指令全部执行完需要(3+2+4)*10=90🔺T.一条指令的执行过程可以分解为取指,分析和执行三步,取指时间t1 =3🔺T,分析时间t2=2🔺T,执行时间t3 =4🔺T;eg: 将一条指令的执行过程分解为取指,分析,执行三步。按照流水线方式执行,若取指时间t1=4🔺T,分析时间t2=2🔺T,执行时间t3 =3🔺T.则执行完100条指令,需要的时间为?
2024-09-22 14:50:10
495
原创 CPU结构基础知识
指令:数量少,使用频率接近,定长格式。累加寄存器AC:通用寄存器,为ALU提供一个工作区,用在暂存数据。特点:指令中存放了一个地址,这个地址对应的内容是操作数的地址。实现方式:增加了通用寄存器,硬布线逻辑控制为主,适合采用流水线。指令:机器语言的一个语句,是一组有意义的二进制代码。数据缓冲寄存器DR:写内存时,暂存指令或数据。指令译码器:对指令中的操作码字段进行分析解释。特点:操作数直接放在指令中,速度快,灵活性差。指令:数量多,使用频率差别大,可变长格式。特点:指令中存放的是操作数的地址。
2024-09-08 22:11:17
401
原创 校验码:奇偶校验,CRC循环冗余校验,海明校验码
海明校验码的原理是:在有效信息位中加入几个校验位形成海明码,使码距比较均匀地拉大,并把海明码的每个二进制位分配到几个奇偶校验组中,当某一位出错后,就会引起有关的几个校验位地值发生变化。把接受到地CRC码用约定的生成多项式G(X)去除(模二除法),如果正确,则余数为0,如果某一位出错,则余数不为0.不同地位数出错其余位数不同。CRC的编码方法:在k位信息码之后拼接r位校验码。应用CRC码的关键是如何从k位信息位,简便地得到r位校验位。奇偶校验,可检测1位(奇数位)的错误,不可纠错。
2024-09-08 13:05:02
491
原创 逻辑运算基础知识
当a=1,b=2,c=3,d=4.m和n的值为1.求执行语句之后n的值,因为a>b是0,所以m=0,直接短路,后面不执行,所以n的值不变还是1.逻辑变量之间的运算称为逻辑运算,二进制数1和0在逻辑上可以代表 真 和 假。逻辑或(|| ,+,U ,V ,OR):连接的两个逻辑全为0时才取0。逻辑与(&&,*,AND):连接的连个逻辑全为1 才取1。a||b||c:只要为真,就不必判断b和c的值。a&&b&&c,只有a为真时才继续往下执行。逻辑异或(XOR):相同取1,不相同取0。,~,NOT):将逻辑取反。
2024-09-08 11:21:11
631
原创 浮点的运算
eg:设16位浮点数,其中阶符1位,阶码值6位,数符1位,尾数8位。若阶码用移码表示,尾数用补码表示,则该浮点数所能表示的数值范围是?浮点数表示:N= 尾数 X 基数。尾数(定点小数):n=9,补码表示范围?阶码(定点整数):n=7,移码表示范围?阶码的位数决定数的表示范围,位数越多,范围越大。尾数可以表示数值的有效精度,位数越多精度越高。在IEEE745中尾数可以是原码。对阶是通过较小数的尾数右移实现的。N = 尾数 * 基数。对阶时,小数向大数看齐。
2024-09-08 10:43:08
412
原创 数据的表示-(反码,原码,补码,移码)
因为再补码里面有一个人为规定,100可以表示为-4,因为0只有一种表示方式是000,所以再补码里面100表示4。反码:整数的反码与原码相同,负数的反码是其绝对值按位取反,符号位不变。采用n位补码(包含一个符号位),表示数据,可以直接表示的数值是?eg:如果“2X”的补码是“90H”,那么X的真值是多少?补码:整数的补码与原码相同,负数的补码是其反码末位加1.原码:最高位是符号位,其余低位表示数值的绝对值。原码:数码个数2^n -1。反码:数码个数2^n -1。移码:补码的符号位取反。补码:数码个数2^n。
2024-09-07 20:04:12
736
原创 qt通过调节伽马值来调节显示器亮度
总结找个方法其实不是很好用,对于有的显示器,会被自动校准回去。如果想通过其它方式实现调节显示器亮度参见我的文章。代码是参考的别人 来源。的,自己做了一点改动。
2024-09-06 11:17:32
794
原创 使用WMI改变显示器亮度
最近遇到了新的需求,需要通过代码去改变显示器的亮度。通过调研发现,改变显示器亮度的方式有三种1.调节伽马值2.使用WMI3.使用DDC/CI协议然而这三个方法都各有缺点:第一个方式:调节伽马值,效果会收到显示器的影响,有的显示器,或者驱动,会去校准显示器亮度。如果你改变了伽马值,在你的鼠标脱离程序的时候,屏幕亮度就会被校准回去。第二个方式:使用WMI。使用WMI是不支持台式电脑的,只能在笔记本上面生效。这个也是我在调试的时候发现的,总是被拒绝访问,去查了才知道台式不支持。
2024-09-06 11:03:18
2360
原创 什么是WMI?
WMI 是基于 Web 统一管理标准(Web-Based Enterprise Management, WBEM)和对象管理来构建的,它允许脚本和应用程序访问和操作系统的信息和管理功能。无论是通过 GUI 工具、脚本还是应用程序,通过 WMI,系统管理员和开发人员可以轻松获取、使用和管理系统信息,提高工作效率和管理水平。WMI 可以查询硬件组件的信息(如 CPU、内存、硬盘、网络适配器等)和软件配置信息(如已安装的应用程序、操作系统版本等)。WMI 通过一种称为对象访问的方式暴露系统信息和管理功能。
2024-09-06 10:46:35
992
原创 使用c++创建WMI应用程序
使用 C++为 WMI创建应用程序:您必须初始化COM、访问和设置 WMI协议,并进行手动清理。但是,C++具有灵活性和功能的优势。因此,虽然对于简单的过程,使用 VisualBasicScriptingEdition(VBScript)或Windows PowerShell效果更好,但对于更复杂的应用程序,C++效果更好,并且需要编写提供程序。下面的过程描述如何创建WMI应用程序。
2024-09-06 10:31:20
1209
原创 示例:创建WMI应用程序
您可以使用本主题中的过程和代码示例创建一个完整的 WMI客户端应用程序,该应用程序执行 COM 初始化、连接到本地计算机上的 WMI、读取一些数据并清理。使用场景: 如果你的应用程序需要指定线程模型,例如在 UI 应用程序中你可能会需要 STA,而在提供多线程服务时可能会使用 MTA。定义: CoInitialize 是一个简单的函数,用于初始化 COM 库,使当前线程能够使用 COM 功能。线程模型: 选择不同的 dwCoInit 选项,允许你在单线程和多线程环境中优化 COM 的使用。
2024-09-06 10:28:29
1254
原创 MFC隐藏tabCtrl控件的页面
比如你一开始有三个页面,然后你需要隐藏其中的一个页面,那么你就应该调用DeleteAllItems()将所有页面全部删除,然后调用addPage重新添加。解决:首先,隐藏是不可能隐藏的,MFC里面没有可以隐藏tab页的接口,只能通过删除Item,重新添加的方式来完成隐藏。这里会遇到一个问题,如果你是用的tabsheet类,如果这个类的show函数里面是这样写的。在删除所有的Item之前,你需要将所有的item页面隐藏,不然可能会出现意想不到的bug。
2024-08-21 16:33:00
653
原创 MFC将类A中的事件在类B中处理采用回调函数实现
在类A的界面上有一个tab控件。tab控件上面有那个页面。在MFC编程中一个tab的一个页面就应该是一个新的类。在tab的一个页面上有一个list控件。现在需要将list控件的点击事件,双击事件等在类A里面处理。回调函数需要传什么参数可以按需求设置,这里没有用自定义消息是因为类A中包含了类B的头文件。自定义消息在类B里面拿到到类A的对象。在类B里面给控件list添加点击事件。在点击事件里面回调类A的函数。给类B对象设置回调函数指针;定义设置回调指针的函数。
2024-08-16 15:54:11
497
原创 MFC为界面添加类编译报错的处理
最后的解决方式是,让添加的这个类继承于CDialog,如果你原本想让这个类继承于CPropertyPage类。你在添加的类的时候也需要继承CDialog类,然后再代码里面去修改继承的类为CPropertyPage。这样编译就不会报错。我需要插入一个dialog,然后给这个dialog添加一个类,这个类要继承于PropertyPage。但是我添加完之后 就编译不过了。删除之前添加的文件也没有用。最近在使用MFC编程的时候,遇到一个问题。
2024-08-16 15:33:33
266
原创 snmp++操作之inform(异步式)
1.管理程序开启监听2.代理程序去对某个oid发起inform操作3.管理程序处理inform请求,并回应代理程序4.代理程序获取并打印回应消息
2024-07-19 15:16:12
1125
原创 snmp++操作之inform(阻塞式)
1.管理程序开启监听2.代理程序去对某个oid发起inform操作3.管理程序处理inform请求,并回应代理程序4.代理程序获取并打印回应消息
2024-07-19 15:05:00
1167
原创 snmp++操作之set
1.代理程序开启监听2.管理程序去对某个oid发起get操作3.代理程序处理get请求,将oid对应的value发给管理程序。4.管理程序获取value并打印5.管理程序将这个oid和新的vlaue绑定起来,放进pdu对象。然后发起set请求6.代理程序处理set请求。然后将oid的value值修改为新的value值。
2024-07-19 14:21:55
2321
原创 snmp++操作之walk
1.代理程序开启监听2.管理程序去对某个oid发起getBulk操作3.代理程序处理getBulk请求,将oid对应的value发给管理程序。4.管理程序获取value并打印5.管理程序再将获得的最后一个oid作为 getBul的oid发起请求。6.管理程序获取value并打印
2024-07-19 14:21:15
1434
2
原创 snmp++操作之getBulk
1.代理程序开启监听2.管理程序去对某个oid发起getBulk操作3.代理程序处理getBulk请求,将oid对应的value发给管理程序。4.管理程序获取value并打印
2024-07-19 14:20:27
2335
原创 snmp++操作之getNext
1.代理程序开启监听2.管理程序去对某些oid发起getNext操作3.代理程序处理getNext请求,将oid对应的下一个oid的value发送给管理程序4.管理程序获取value并打印
2024-07-19 14:19:31
1447
原创 snmp++操作之get篇
1.代理程序开启监听2.管理程序去对某些oid发起get操作3.代理程序处理get请求,将oid对应的value发给管理程序。4.管理程序获取value并打印
2024-07-19 14:18:39
2899
Windows Management Instrumentation (WMI)的英文开发文档
2024-09-06
Qt初学者学习文档,讲述了基础用法和常用控件
2024-01-31
Linux下去除opencv窗口边框
2025-03-04
Qprocess启动cmd cmd弹窗不显示 任务管理器能看到是运行的
2024-05-10
qt编译mysql驱动失败
2023-05-12
OpenGL纹理贴图有缝隙
2023-01-10
堆空间不释放,从地址取值,访问冲突
2022-10-27
c++局部变量释放,还可以拿到地址的值
2022-08-18
关于#qt#的问题:error: undefined reference to `cv::face::EigenFaceRecognizer::create(int, double)'
2021-09-17
QT实现录屏效率低暂用内存
2021-09-14
在qt中配置openCV中遇到的问题
2021-09-05
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅