当前位置: 首页 > news >正文

在 Qt 中,不带参数或整形的参选的信号能够从 std::thread 发送成功,而带枚举离线的信号却发送失败

在 Qt 中,不带参数或整形的参选的信号能够从 std::thread 发送成功,而带枚举离线的信号却发送失败
当信号和槽在不同线程时,默认使用 队列连接(Qt::QueuedConnection),信号会被放入接收线程的事件队列,等待事件循环处理。
不带参数的信号:不需要传递参数,Qt 无需序列化数据,仅需传递信号类型本身(元对象系统已隐式注册信号类型)。
带参数的信号:需要将参数从发送线程拷贝到接收线程。
Qt 要求:
参数类型必须通过 qRegisterMetaType<T>() 注册到元对象系统。

内置类型隐式注册
Qt 已为 int、QString 等基础类型隐式调用了 qRegisterMetaType,因此它们可以直接用于跨线程信号槽的参数传递。
但枚举类型(包括 enum 和 enum class)需要显式注册。

枚举类型未被元对象系统识别

如果枚举类型未通过 Q_ENUM 或 Q_ENUM_NS 注册到 Qt 元对象系统,Qt 无法在跨线程时序列化枚举值。
即使调用了 qRegisterMetaType,若未使用 Q_ENUM,注册会失败。
枚举作用域问题
enum class(强类型枚举)需要完整作用域名称注册,例如 qRegisterMetaType<MyClass::MyEnum>("MyClass::MyEnum")。

http://www.dtcms.com/a/89094.html

相关文章:

  • cocos creator 笔记-路边花草
  • java8循环解压zip文件---实现Excel文件数据追加
  • 慧通测控汽车智能座舱测试技术
  • k8s基础知识总结node+pod(上)
  • CSS语言的双向链表
  • 4、pytest常用插件
  • word中指定页面开始添加页码
  • Python(4)Python函数编程性能优化全指南:从基础语法到并发调优
  • Java设计模式之访问者模式
  • 计算机网络 - OSI 七层模型
  • 笔记:分享如何使用github静态页面搭建个人页面
  • 【2025】基于springboot+uniapp的企业培训打卡小程序设计与实现(源码、万字文档、图文修改、调试答疑)
  • 专访成都昭音科技Jackal:AI内容营销助力中企走向全球
  • 鸿蒙学习笔记(2)-国际化配置、ArkTS简述
  • 【Javaweb】b站黑马视频学习笔记(导览)
  • 多模态大模型Qwen 和 Qwen2 的模型结构、训练方式与数据处理对比分析
  • 安卓应用兼容新方案:Android Translation Layer(ATL)
  • 抽奖的诱惑系统注册与登录功能测试报告
  • 机器学习都有哪些算法?
  • 大模型技术在商品归一和商品预测中的应用
  • 5.5 位运算专题:LeetCode 面试题 17.19. 消失的两个数字
  • 重庆邮电大学笔试F021 考纲解析
  • 批量将PPT转换成多张图片
  • Qt6相对Qt5的主要提升(AI总结)
  • 军事级加密通信系统——基于QML的战术地图加密传输
  • Session模拟登录与退登
  • python安装教程
  • ETL:数据清洗、规范化和聚合的重要性
  • ATT 汇编常用指令
  • 微信小程序开发:页面结构与样式设计