- 博客(93)
- 资源 (28)
- 收藏
- 关注
原创 在Linux上使用libasan开发QT程序定位内存问题
ASAN简介与QT项目配置指南 ASAN是Google开发的内存错误检测工具,可检测内存泄漏、越界访问、释放后使用等常见问题。在QT项目中可通过两种方式配置使用: qmake方式:在.pro文件中添加编译和链接标志 CMake方式:在CMakeLists.txt中添加相应选项 运行时需设置ASAN_OPTIONS环境变量控制检测行为。该工具能有效提升QT项目的内存安全性和稳定性。
2025-07-10 14:44:25
165
原创 在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
摘要:解决QWebEngineView继承后无法捕获鼠标事件的问题。原因是网页加载后内部QOpenGLWidget接管了事件。方案是重载event函数,截取ChildAdded事件为子控件安装事件过滤器,在eventFilter中处理鼠标事件。关键代码包括设置WA_AcceptTouchEvents属性,在ChildAdded事件中安装过滤器,以及在eventFilter中拦截鼠标按下事件。(149字)
2025-06-09 11:05:05
357
原创 基于Qt封装数据库基本增删改查操作,支持多线程,并实现SQLite数据库单例访问
【代码】基于Qt封装数据库基本增删改查操作,并实现SQLite数据库单例访问。
2025-05-30 09:58:54
448
原创 Qt读写XML文档
XML(可扩展标记语言)是一种用于存储和传输结构化数据的标记语言,具有树状结构、标签、属性、文本内容等核心特性。在Qt中,读写XML文档的常用方式包括基于DOM(文档对象模型)和流式处理。DOM方式通过QDomDocument类实现,适合中小型文件,支持XPath查询和完整文档处理,但内存消耗高且性能较慢。流式处理则通过QXmlStreamReader和QXmlStreamWriter类实现,适合处理大文件,内存占用低且效率高,但仅支持顺序访问且状态管理复杂。示例代码展示了如何使用这两种方式读取和写入XML
2025-05-09 18:53:24
833
原创 C++程序崩溃生成dmp文件
基于dbghelp库实现C++程序崩溃时生成dmp文件,在main函数体的第一行执行SetUnhandledExceptionFilter函数即可,生成dmp文件后可以使用VS打开查看崩溃的异常代码、异常信息、通过调试dmp文件查看调用栈等。
2025-04-24 14:17:48
285
原创 QPainter绘制一个简单的等待动画
在我们软件上有时候需要做一些耗时操作,这时界面上应该有明确的的显示表明耗时操作正在进行中,而Qt中并没有提供此类控件,那就自己造轮子吧。
2025-03-21 01:12:40
180
原创 关于QMetaObject::invokeMethod的作用和用法
QMetaObject::invokeMethod 是 Qt 中一个强大的工具,用于通过元对象系统动态调用对象的成员函数(包括信号和槽)。它允许你在运行时调用方法,而不需要直接知道方法的具体签名或对象类型。这在某些场景下非常有用,例如跨线程调用、延迟调用或动态调用未知的方法。它支持同步和异步调用,可以处理带参数和返回值的方法,并适用于跨线程调用的场景。通过合理使用 QMetaObject::invokeMethod,可以实现更灵活和动态的代码逻辑。
2025-03-19 22:13:30
568
原创 关于QOverload关键字的作用和用法
在 Qt 中,QOverload 是一个用于解决信号和槽函数重载问题的辅助工具。当信号或槽函数有多个重载版本时,编译器无法直接确定应该使用哪个版本,这时就需要使用 QOverload 来明确指定要连接的信号或槽的签名。QOverload 是一个模板工具,用于显式指定信号或槽的签名。它可以帮助编译器确定要连接的函数指针类型。
2025-03-18 23:01:45
365
原创 抽象工厂模式的C++实现示例
抽象工厂模式通过提供一种方式来创建一系列相关或依赖的对象,确保这些对象是兼容的,并且将客户端代码与具体类解耦。它适用于需要创建产品族的场景,并且易于扩展和维护。然而,它也会增加系统的复杂性,并且在支持新种类的产品时可能需要修改抽象工厂接口及其所有实现类。
2025-03-14 00:30:57
493
原创 状态模式的C++实现示例
状态模式(State Pattern) 是一种行为设计模式,允许对象在其内部状态改变时改变其行为。它将状态相关的逻辑分散到不同的状态类中,避免了使用大量的条件语句来处理不同状态下的行为。:将对象的状态抽象为独立的类,每个状态类实现与该状态相关的行为。:上下文对象(Context)持有一个状态对象的引用,并将行为委托给当前状态对象。:状态类负责在适当的时候切换到其他状态,上下文对象只需更新当前状态的引用。
2025-03-12 01:04:13
520
原创 责任链模式的C++实现示例
责任链模式是一种行为设计模式,允许多个对象都有机会处理请求,从而避免请求的发送者与接收者之间的耦合。请求沿着处理链传递,直到某个对象处理它为止。
2025-03-12 00:07:27
667
原创 代理模式的C++实现示例
代理模式通过引入代理对象来控制对目标对象的访问,可以在不修改目标对象的情况下增加额外的功能或控制访问。它在延迟加载、访问控制、日志记录等场景中非常有用。然而,代理模式也会增加系统的复杂性和性能开销,因此在使用时需要权衡利弊。
2025-03-11 11:47:15
469
原创 装饰器模式的C++实现示例
装饰器设计模式是一种结构型设计模式,它允许动态地为对象添加额外的行为或职责,而无需修改其原始类。装饰器模式通过创建一个装饰器类来包装原始对象,并在保持原始对象接口一致性的前提下,扩展其功能。装饰器模式的核心在于:动态扩展功能:在不改变原始对象的情况下,通过装饰器为其添加新的行为。组合优于继承:装饰器模式通过组合的方式扩展功能,避免了继承带来的类层次结构复杂化。
2025-03-11 00:18:24
490
原创 模板方法模式的C++实现示例
模板方法设计模式是一种行为设计模式,它定义了一个算法的框架,并将某些步骤的具体实现延迟到子类中。通过这种方式,模板方法模式允许子类在不改变算法结构的情况下重新定义算法的某些步骤。模板方法模式的核心在于:1、定义一个算法的骨架:在父类中定义一个模板方法,该方法包含算法的步骤。2、延迟实现:将某些步骤的具体实现交给子类来完成。
2025-03-10 23:02:57
507
原创 观察者模式的C++实现示例
观察者模式是一种行为型设计模式,定义了对象之间的一对多依赖关系。当一个对象(称为Subject,主题)的状态发生改变时,所有依赖于它的对象(称为Observer,观察者)都会自动收到通知并更新。**Subject:**维护观察者列表,提供注册、移除观察者的方法,以及通知观察者的功能。**Observer:**定义一个更新接口,用于在Subject状态改变时接收通知。
2025-03-05 00:21:45
462
原创 策略模式的C++实现示例
通过策略模式,我们可以将算法的实现与使用算法的环境解耦,使得算法可以独立于客户端代码进行扩展和修改。这种设计模式特别适用于需要动态切换算法的场景。
2025-03-04 00:36:47
403
原创 工厂方法模式的C++实现示例
工厂方法模式是一种创建型设计模式,它允许子类决定实例化哪个类。下面是一个基于C++11的工厂方法模式的示例,展示了如何通过工厂类来创建不同类型的对象。
2025-03-04 00:08:08
222
原创 Qt基于等待条件QWaitCondition实现的任务队列模型示例
Qt中的QWaitCondition是一个用于多线程同步的类,允许线程在某些条件满足时唤醒其他等待的线程。它通常与QMutex配合使用,协调线程之间的执行顺序,适用于生产者-消费者模型、任务队列调度等场景。:使当前线程进入等待状态,并释放关联的互斥锁。当条件满足时,线程被唤醒并重新获取锁。:唤醒一个正在等待的线程(按操作系统调度策略选择)。:唤醒所有正在等待的线程。
2025-02-28 15:48:42
1130
原创 Qt基于信号量QSemaphore实现的生产者消费者模型
在 Qt 中,信号量(QSemaphore)是一种用于控制对共享资源访问的同步工具。它允许一定数量的线程同时访问共享资源,适合用于生产者-消费者模型。
2025-02-28 11:46:40
432
原创 关于qmake中一些类型的判断
执行qmake的时候,"debug mode"和"release mode"都会被输出,但是编译的时候是按照当前激活的模式来的。
2025-02-27 14:19:23
251
原创 关于C++中static_cast、const_cast、dynamic_cast的简单介绍
在C++中,static_cast、const_cast 和 dynamic_cast 是用于类型转换的关键字,它们的行为和适用场景有显著区别。
2025-02-26 10:44:40
303
原创 关于C++中函数的重写、重载、隐藏的简单介绍
在同一作用域内,多个函数使用相同的函数名,但参数列表不同(类型、数量或顺序不同)。返回值类型可以不同,但仅返回值不同不足以构成重载。在继承关系中,子类重新定义父类的虚函数(使用 virtual 关键字),要求函数名、参数列表和返回类型完全相同。通过基类指针或引用调用时,实际执行的是子类的函数(多态性)。子类定义了与父类同名的函数(无需相同参数列表),导致父类的同名函数在子类作用域中被隐藏。即使参数列表不同,父类函数也会被隐藏。若要调用父类函数,需显式指定作用域(如 Base::func())。
2025-02-26 10:25:26
307
原创 C# .NET调用聚合数据天气预报API示例,基于RestSharp库
【代码】C# .NET调用聚合数据天气预报API示例,基于RestSharp库。
2025-02-18 14:43:38
146
原创 适配器模式的C++实现示例
适配器模式(Adapter Pattern)是一种结构型设计模式,它允许将一个类的接口转换成客户端所期望的另一个接口。适配器模式通常用于解决接口不兼容的问题。
2025-02-10 15:41:03
284
原创 关于回调函数(callback)
在C++中,回调函数是一种常见的编程技术,它允许你将一个函数作为参数传递给另一个函数,并在适当的时候调用它。回调函数通常用于事件处理、异步编程和模块化设计中。1、函数指针:在C++中,回调函数通常是通过函数指针来实现的。函数指针可以指向一个具体的函数,并可以在运行时调用该函数。2、参数传递:回调函数作为参数传递给另一个函数,这个函数在某个事件发生时调用回调函数。3、灵活性:使用回调函数可以提高代码的灵活性和可重用性,因为调用者可以决定在什么情况下调用哪个函数。// 定义一个回调函数的类型。
2025-01-21 17:08:44
863
原创 软件设计师考试中需要掌握的一些常用算法,基于C++实现
在哈希查找的过程中,首先需要对给定的key应用哈希函数,将其转换为对应的数组下标,然后查找数组中是否存储了待查找的value。通过分治和递归的方式将一个序列分成两个子序列,左序列所有元素都小于等于枢轴元素,右序列所有元素都大于等于枢轴元素,然后对这两个子序列分别进行同样的操作,直到序列只剩下一个元素或空序列为止。下面示例中,采用的是冒泡排序的一种优化方法,即设置一个flag变量,记录本次遍历是否发生了交换,如果没有交换则说明已经排好序了,可以直接退出循环,从而避免后续不必要的遍历比较。
2023-06-03 19:20:13
530
暗黑+橙色qss皮肤,支持一键换肤,使用setStyleSheet即可
2025-03-23
简易Qt程序打包工具V1.0.0.2版本
2022-12-20
简易Qt程序打包工具V1.0.0版本
2022-12-04
QR二维码工具二维码生成与识别
2022-03-22
OCR文字识别综合示例源码.7z
2021-05-19
BaiduOCR集成截图.7z
2021-03-25
AD7746电容测量Arduino库以及示例
2020-11-24
QT+讯飞智能语音在线识别.7z
2021-07-15
百度人脸识别综合示例1.0.rar
2021-05-21
DesktopWeather.7z
2021-08-17
QT串口调试助手Serial_V1-3.rar
2021-03-16
BaiduFaceDemo.rar
2021-03-22
EchartOnQt.7z
2021-04-22
BaiduFaceDemo.7z
2021-03-24
OCR文字识别综合应用1.1.7z
2021-05-12
Qt+讯飞智能语音助手.7z
2021-07-17
WebSocket网络通信调试工具V1.1增强版.rar
2021-06-30
NetAssistan_V1-3.rar
2021-03-16
LabVIEW之cintools
2020-11-24
mainWindowTemplate2.0.7z
2021-04-16
MultiThreadTemp.rar
2021-03-15
mainWindowTemplate.rar
2021-01-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人