- 博客(87)
- 资源 (28)
- 收藏
- 关注
原创 QPainter绘制一个简单的等待动画
在我们软件上有时候需要做一些耗时操作,这时界面上应该有明确的的显示表明耗时操作正在进行中,而Qt中并没有提供此类控件,那就自己造轮子吧。
2025-03-21 01:12:40
115
原创 关于QMetaObject::invokeMethod的作用和用法
QMetaObject::invokeMethod 是 Qt 中一个强大的工具,用于通过元对象系统动态调用对象的成员函数(包括信号和槽)。它允许你在运行时调用方法,而不需要直接知道方法的具体签名或对象类型。这在某些场景下非常有用,例如跨线程调用、延迟调用或动态调用未知的方法。它支持同步和异步调用,可以处理带参数和返回值的方法,并适用于跨线程调用的场景。通过合理使用 QMetaObject::invokeMethod,可以实现更灵活和动态的代码逻辑。
2025-03-19 22:13:30
472
原创 关于QOverload关键字的作用和用法
在 Qt 中,QOverload 是一个用于解决信号和槽函数重载问题的辅助工具。当信号或槽函数有多个重载版本时,编译器无法直接确定应该使用哪个版本,这时就需要使用 QOverload 来明确指定要连接的信号或槽的签名。QOverload 是一个模板工具,用于显式指定信号或槽的签名。它可以帮助编译器确定要连接的函数指针类型。
2025-03-18 23:01:45
226
原创 抽象工厂模式的C++实现示例
抽象工厂模式通过提供一种方式来创建一系列相关或依赖的对象,确保这些对象是兼容的,并且将客户端代码与具体类解耦。它适用于需要创建产品族的场景,并且易于扩展和维护。然而,它也会增加系统的复杂性,并且在支持新种类的产品时可能需要修改抽象工厂接口及其所有实现类。
2025-03-14 00:30:57
443
原创 状态模式的C++实现示例
状态模式(State Pattern) 是一种行为设计模式,允许对象在其内部状态改变时改变其行为。它将状态相关的逻辑分散到不同的状态类中,避免了使用大量的条件语句来处理不同状态下的行为。:将对象的状态抽象为独立的类,每个状态类实现与该状态相关的行为。:上下文对象(Context)持有一个状态对象的引用,并将行为委托给当前状态对象。:状态类负责在适当的时候切换到其他状态,上下文对象只需更新当前状态的引用。
2025-03-12 01:04:13
453
原创 责任链模式的C++实现示例
责任链模式是一种行为设计模式,允许多个对象都有机会处理请求,从而避免请求的发送者与接收者之间的耦合。请求沿着处理链传递,直到某个对象处理它为止。
2025-03-12 00:07:27
610
原创 代理模式的C++实现示例
代理模式通过引入代理对象来控制对目标对象的访问,可以在不修改目标对象的情况下增加额外的功能或控制访问。它在延迟加载、访问控制、日志记录等场景中非常有用。然而,代理模式也会增加系统的复杂性和性能开销,因此在使用时需要权衡利弊。
2025-03-11 11:47:15
402
原创 装饰器模式的C++实现示例
装饰器设计模式是一种结构型设计模式,它允许动态地为对象添加额外的行为或职责,而无需修改其原始类。装饰器模式通过创建一个装饰器类来包装原始对象,并在保持原始对象接口一致性的前提下,扩展其功能。装饰器模式的核心在于:动态扩展功能:在不改变原始对象的情况下,通过装饰器为其添加新的行为。组合优于继承:装饰器模式通过组合的方式扩展功能,避免了继承带来的类层次结构复杂化。
2025-03-11 00:18:24
417
原创 模板方法模式的C++实现示例
模板方法设计模式是一种行为设计模式,它定义了一个算法的框架,并将某些步骤的具体实现延迟到子类中。通过这种方式,模板方法模式允许子类在不改变算法结构的情况下重新定义算法的某些步骤。模板方法模式的核心在于:1、定义一个算法的骨架:在父类中定义一个模板方法,该方法包含算法的步骤。2、延迟实现:将某些步骤的具体实现交给子类来完成。
2025-03-10 23:02:57
446
原创 观察者模式的C++实现示例
观察者模式是一种行为型设计模式,定义了对象之间的一对多依赖关系。当一个对象(称为Subject,主题)的状态发生改变时,所有依赖于它的对象(称为Observer,观察者)都会自动收到通知并更新。**Subject:**维护观察者列表,提供注册、移除观察者的方法,以及通知观察者的功能。**Observer:**定义一个更新接口,用于在Subject状态改变时接收通知。
2025-03-05 00:21:45
414
原创 策略模式的C++实现示例
通过策略模式,我们可以将算法的实现与使用算法的环境解耦,使得算法可以独立于客户端代码进行扩展和修改。这种设计模式特别适用于需要动态切换算法的场景。
2025-03-04 00:36:47
347
原创 工厂方法模式的C++实现示例
工厂方法模式是一种创建型设计模式,它允许子类决定实例化哪个类。下面是一个基于C++11的工厂方法模式的示例,展示了如何通过工厂类来创建不同类型的对象。
2025-03-04 00:08:08
173
原创 Qt基于等待条件QWaitCondition实现的任务队列模型示例
Qt中的QWaitCondition是一个用于多线程同步的类,允许线程在某些条件满足时唤醒其他等待的线程。它通常与QMutex配合使用,协调线程之间的执行顺序,适用于生产者-消费者模型、任务队列调度等场景。:使当前线程进入等待状态,并释放关联的互斥锁。当条件满足时,线程被唤醒并重新获取锁。:唤醒一个正在等待的线程(按操作系统调度策略选择)。:唤醒所有正在等待的线程。
2025-02-28 15:48:42
959
原创 Qt基于信号量QSemaphore实现的生产者消费者模型
在 Qt 中,信号量(QSemaphore)是一种用于控制对共享资源访问的同步工具。它允许一定数量的线程同时访问共享资源,适合用于生产者-消费者模型。
2025-02-28 11:46:40
364
原创 关于qmake中一些类型的判断
执行qmake的时候,"debug mode"和"release mode"都会被输出,但是编译的时候是按照当前激活的模式来的。
2025-02-27 14:19:23
199
原创 关于C++中static_cast、const_cast、dynamic_cast的简单介绍
在C++中,static_cast、const_cast 和 dynamic_cast 是用于类型转换的关键字,它们的行为和适用场景有显著区别。
2025-02-26 10:44:40
264
原创 关于C++中函数的重写、重载、隐藏的简单介绍
在同一作用域内,多个函数使用相同的函数名,但参数列表不同(类型、数量或顺序不同)。返回值类型可以不同,但仅返回值不同不足以构成重载。在继承关系中,子类重新定义父类的虚函数(使用 virtual 关键字),要求函数名、参数列表和返回类型完全相同。通过基类指针或引用调用时,实际执行的是子类的函数(多态性)。子类定义了与父类同名的函数(无需相同参数列表),导致父类的同名函数在子类作用域中被隐藏。即使参数列表不同,父类函数也会被隐藏。若要调用父类函数,需显式指定作用域(如 Base::func())。
2025-02-26 10:25:26
226
原创 C# .NET调用聚合数据天气预报API示例,基于RestSharp库
【代码】C# .NET调用聚合数据天气预报API示例,基于RestSharp库。
2025-02-18 14:43:38
92
原创 适配器模式的C++实现示例
适配器模式(Adapter Pattern)是一种结构型设计模式,它允许将一个类的接口转换成客户端所期望的另一个接口。适配器模式通常用于解决接口不兼容的问题。
2025-02-10 15:41:03
249
原创 关于回调函数(callback)
在C++中,回调函数是一种常见的编程技术,它允许你将一个函数作为参数传递给另一个函数,并在适当的时候调用它。回调函数通常用于事件处理、异步编程和模块化设计中。1、函数指针:在C++中,回调函数通常是通过函数指针来实现的。函数指针可以指向一个具体的函数,并可以在运行时调用该函数。2、参数传递:回调函数作为参数传递给另一个函数,这个函数在某个事件发生时调用回调函数。3、灵活性:使用回调函数可以提高代码的灵活性和可重用性,因为调用者可以决定在什么情况下调用哪个函数。// 定义一个回调函数的类型。
2025-01-21 17:08:44
742
原创 软件设计师考试中需要掌握的一些常用算法,基于C++实现
在哈希查找的过程中,首先需要对给定的key应用哈希函数,将其转换为对应的数组下标,然后查找数组中是否存储了待查找的value。通过分治和递归的方式将一个序列分成两个子序列,左序列所有元素都小于等于枢轴元素,右序列所有元素都大于等于枢轴元素,然后对这两个子序列分别进行同样的操作,直到序列只剩下一个元素或空序列为止。下面示例中,采用的是冒泡排序的一种优化方法,即设置一个flag变量,记录本次遍历是否发生了交换,如果没有交换则说明已经排好序了,可以直接退出循环,从而避免后续不必要的遍历比较。
2023-06-03 19:20:13
401
原创 Qt开发二维码工具QR二维码生成和识别支持批量生成免费使用
简介Qt编写,使用第三方库libqrencode和QZxing,支持QR二维码生成和识别,二维码可批量生成,支持中文,还可以设置二维码大小颜色。免费使用,下载链接在本文底部,拿走不用谢,假如您慷慨大方请点个赞。下载地址...
2022-03-22 00:22:58
844
原创 基于qt平台的ip地址输入控件
说明qt编写的ip地址输入控件,功能齐全,非常实用,使用提升法集成到自己项目的ui中即可。提供设置ip和获取ip两个接口。具体看代码,比较简单,注释应该比较详细了,下载地址放在文章尾部。代码ipinputcontrol.h#ifndef IPINPUTCONTROL_H#define IPINPUTCONTROL_H#include <QWidget>#include <QKeyEvent>#include <QRegExpValidator>QT_
2022-03-07 17:23:46
6674
原创 关于QTableWidget的一些使用方法,包括从父类继承的
单元格cell行和宽resizeColumnsToContents():根据内容自动调整所有列的宽度resizeColumnToContents(int column):根据内容自动调整列号为column的列的宽度resizeRowsToContents():根据内容自动调整所有行的高度resizeRowToContents(int row):根据内容自动调整行号为row的行的高度setRowCount(int rows):设置行数setColumnCount(int columns):设置列
2022-03-03 22:48:06
485
原创 CMake学习笔记
filefile(GLOB SRC_FILES src/*.cpp)说明:设置待编译的源文件,将src目录下的所有.cpp文件放到SRC_FILES变量中。
2022-02-12 14:25:35
1169
原创 QML与Qt C++交互之在C++中访问QML元素、调用function方法函数
在C++中访问QML元素,需要根据QML元素的objectName获取到对象,并转为QObject进行访问和调用。QML代码示例:Label{ objectName: 'mylabel' id:mylabel text: 'lalala' font.pixelSize: 24 color: '#008888' function get_text(tempStr) { return tenpStr + text }
2021-11-29 11:59:36
1150
原创 QML与Qt C++交互之在QML中调用已实例化的C++对象
方法一:在QQmlApplicationEngine对象load之前使用QQmlContext进行设置。优先推荐该方法。C++示例代码://C++代码://QML调用C++对象,该方法需要#include <QQmlContext>auto context = engine.rootContext();//使用context将Person类的person2对象注册到QML中,该方法不需要再qml文件中import组件,在QML直接访问person2即可Person person1("
2021-11-29 11:36:46
1190
暗黑+橙色qss皮肤,支持一键换肤,使用setStyleSheet即可
2025-03-23
简易Qt程序打包工具V1.0.0.2版本
2022-12-20
简易Qt程序打包工具V1.0.0版本
2022-12-04
QR二维码工具二维码生成与识别
2022-03-22
DesktopWeather.7z
2021-08-17
Qt+讯飞智能语音助手.7z
2021-07-17
QT+讯飞智能语音在线识别.7z
2021-07-15
WebSocket网络通信调试工具V1.1增强版.rar
2021-06-30
百度人脸识别综合示例1.0.rar
2021-05-21
OCR文字识别综合示例源码.7z
2021-05-19
OCR文字识别综合应用1.1.7z
2021-05-12
EchartOnQt.7z
2021-04-22
mainWindowTemplate2.0.7z
2021-04-16
BaiduOCR集成截图.7z
2021-03-25
BaiduFaceDemo.7z
2021-03-24
BaiduFaceDemo.rar
2021-03-22
NetAssistan_V1-3.rar
2021-03-16
QT串口调试助手Serial_V1-3.rar
2021-03-16
MultiThreadTemp.rar
2021-03-15
mainWindowTemplate.rar
2021-01-15
AD7746电容测量Arduino库以及示例
2020-11-24
LabVIEW之cintools
2020-11-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人