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

跨线程connect传参的错误

转自个人博客

最近在使用connect连接信号与槽并且传参的时候,报了如下错误:

QObject::connect: Cannot queue arguments of type 'QMap<int, QString>' (Make sure 'QMap<int, QString>' is registered using qRegisterMetaType().)

刚见到这错误就猜想是不支持自定义变量类型,但是connect用了这么多了,其他各种类型甚至不是Qt的类型也都能传。后来搜了一下才发现是可能多线程的问题,Qt无法自动序列化并传递这种类型。

注:有时候不会直接报错,只是运行代码后会出现信号无法正常触发槽函数

而解决办法也很简单,在跨线程连接需要传递自定义数据类型时,提前使用qRegisterMetaType()将其注册为元数据类型,以便让Qt默认对其进行处理。注意格式,如下:

qRegisterMetaType<QMap<int, QString>>("QMap<int, QString>");

相关文章:

  • 嘉瑞建设有限公司网站微博上如何做网站推广
  • 做网站找什么公司工作广点通和腾讯朋友圈广告区别
  • 网站制作公司价格好的推广平台
  • 广东做网站找谁磁力链最好用的搜索引擎
  • 可以进入外国网站的浏览器站长工具 忘忧草
  • 网站建设 微信 appseo线下培训机构
  • Dify、n8n、Coze、FastGPT 和 Ragflow 对比分析:如何选择最适合你的智能体平台?
  • 一款实验室创客实验室用的桌面式五轴加工中心
  • 深入理解残差网络(ResNet):原理与PyTorch实现
  • github 上的php项目
  • java 导出word 实现循环表格
  • Ubuntu 物理桌面远程访问教程(基于 RealVNC / mstsc)
  • npm 报错:“无法加载文件 ...npm.ps1,因为在此系统上禁止运行脚本” 解决方案(附执行策略说明)
  • 暴雨信创电脑代理商成功中标长沙市中医康复医院
  • docker搭建mysql主从集群
  • 笔记01:现有PCB文件自动生成PCB库
  • 分布式系统 - 分布式缓存及方案实现
  • 基于FPGA的UART回环设计
  • Qt开发1--Qt概述,安装,创建第一个Qt项目
  • 在windows系统上安装Comfy UI
  • 内存条与CPU三级缓存之间的区别
  • Vue SPA 路由跳转无法回到顶部问题排查与解决
  • C++设计模式(GOF-23)——04 C++装饰器模式(Decorator)(一个类同时继承和组合另一个类)解决类爆炸问题、模板装饰器
  • iPhone越狱基本流程
  • 【CMake入门学习教程】bash语句示例注解
  • 60页PPT实战方案 | 大数据决策分析平台建设全流程路径图