
Qt笔记
文章平均质量分 75
強云
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
QObject::connect()调用std::shared_ptr
在 Qt 的元对象系统里,QObject::connect() 需要拿到一个 QObject*(或者可调用对象),它并不会识别或解包 std::shared_ptr。所以直接把一个 std::shared_ptr 当作 slot 对象传进去,是编译不过去的。原创 2025-05-13 11:15:45 · 480 阅读 · 0 评论 -
Qt信号槽连接的三种方法对比
1.在类里用一个成员容器保存连接句柄。3.断开所有/部分连接。原创 2025-04-22 15:17:38 · 326 阅读 · 0 评论 -
QHash(C++)
QHash 是 Qt 提供的基于哈希表的关联容器,用于将键(Key)映射到值(T)。它定义于头文件 中,模板形式为 QHash<Key, T>,其中 Key 必须满足可哈希的要求(要么是 Qt 内置可哈希类型,要么提供对应的 uint qHash(const Key &key, uint seed = 0) 重载),T 则为任意可复制的类型。在底层实现上,QHash 使用一组“桶”(bucket)来存放元素,每个桶维护一个链表(singly linked list)存储哈希冲突的节点。原创 2025-04-21 14:21:30 · 441 阅读 · 0 评论 -
多任务响应2(Qt)
在多的基础上,当任务响应比较复杂时,需要整合多个模块的信息。原创 2025-04-14 10:02:10 · 1008 阅读 · 0 评论 -
多任务响应1(Qt)
设计思想:解耦与扩展性: 每个功能都有独立的命令对象,新增或修改按键响应只需要新增或修改对应命令,而不必改动整体分发逻辑;统一管理: CommandManager 统一管理各个命令对象,与 UI 层解耦。利用 Qt 的信号和槽,UI 层只需负责转发按键事件;灵活性: 利用 C++17 的特性(如 lambda 表达式、std::unique_ptr 等),使代码更加现代化和健壮。[UI按钮]▼[Lambda表达式]│ 调用▼。原创 2025-04-14 09:57:14 · 499 阅读 · 0 评论 -
Qt - findChild
findChild 是 Qt 中一个非常实用的工具函数,利用模板和元对象系统的强大特性,能够方便地在复杂的对象树中查找特定类型和名称的子对象。无论是在 UI 动态构建、调试还是模块化开发中,都能极大地提高开发效率,减少手动管理子对象的繁琐工作。原创 2025-04-01 15:26:04 · 731 阅读 · 0 评论 -
VS Qt 无法打开源文件
删除拷贝的.qrc文件并在本地重建。原创 2025-03-10 10:37:27 · 130 阅读 · 0 评论 -
Qt多线程
Qt 提供了多种方式来处理多线程编程,它不仅使多线程操作更易于管理,还与 Qt 的事件驱动架构紧密集成。下面是 Qt 多线程编程的详细介绍,包括关键类、模式以及常见的使用场景。原创 2024-08-29 14:22:00 · 1414 阅读 · 1 评论 -
工业软件架构4:(QT和C++实现)
定义任务类,任务在执行前需要先检查依赖管理器,以决定是否可以开始执行。public:// 模拟任务A的耗时操作private:public:// 等待任务A完成// 模拟任务B的耗时操作private:public:// 等待任务A完成// 等待任务B完成// 模拟任务C的耗时操作private:通过引入 TaskDependencyManager 来管理任务之间的依赖关系和状态,可以确保任务按照预期的顺序执行,并防止在不适当的情况下启动某些任务。原创 2024-08-28 09:48:24 · 600 阅读 · 0 评论 -
工业软件架构2:(QT和C++实现)
首先,我们定义一个 Command 接口,该接口声明了 execute() 方法。public:命令模式通过将操作封装为对象,解耦了请求的发出者与接收者,使得系统具有更好的灵活性和可扩展性。需要对操作进行参数化:将操作封装为命令对象,允许操作参数化。需要在不同时间执行操作:命令对象可以在创建时延迟执行,或者通过队列机制进行排队执行。需要支持撤销/重做:命令对象可以记录操作状态,允许撤销和重做操作。需要记录日志:通过命令模式,可以轻松记录操作日志,并在需要时重放这些操作。原创 2024-08-26 17:23:52 · 1672 阅读 · 1 评论 -
工业软件架构1:(QT和C++实现)
这个架构充分考虑了实时性、模块化、和可扩展性,适应了复杂硬件环境下的多功能需求。模块化设计:各个功能通过模块化设计进行管理,减少耦合度,增加系统的灵活性。事件驱动:事件总线在各模块间传递事件,实现模块间的松耦合和实时通信。实时响应:传感器数据、硬件状态和按键操作均通过事件总线实时更新,确保系统的及时响应。界面管理:使用 QStackedWidget 管理多个页面,并通过事件总线实现页面的动态切换和更新。参数管理:文件系统与应用程序参数保持同步,确保参数的一致性和持久性。原创 2024-08-26 16:32:52 · 1810 阅读 · 0 评论 -
使用 QThread 而不是 std::thread
对于绝大多数基于 Qt 的应用程序开发,特别是涉及到 UI 和信号槽机制的场景,QThread 提供了更好的集成、简化的线程管理以及丰富的功能支持。因此,使用 QThread 通常是更好的选择。原创 2024-08-26 15:40:29 · 756 阅读 · 0 评论 -
Qt动态调用 - QMetaObject::invokeMethod
动态调用是 Qt 的元对象系统的一项强大功能,它允许在运行时通过名称调用槽函数、信号和普通成员函数。这种能力对于构建灵活和可扩展的应用程序非常有用,比如插件系统或脚本接口。原创 2024-08-08 15:05:29 · 1310 阅读 · 0 评论