最近在编写Qt代码的时候遇到标题上的问题,现象是:在收到一个xml字符串需要解析时,我放在线程里面处理,然后线程执行完成后将xml对应的结构体返回给主线程。在主线程的槽函数中始终接收不到,但是在子线程中emit函数是执行过的,在调试窗口中看到下面这句话:Make sure ‘SystemCfg’ is registered using qRegisterMetaType()。其中SystemCfg是emit要返回的参数。

出现这个问题的原因是:在线程中通过signal-slot传递信息时,参数默认时放到Qt的消息队列中的,但是SystemCfg结构体时自定义的,不是Qt能直接识别的结构。

解决办法:将SystemCfg注册到Qt中,首先在头文件中添加如下代码:

#include <QMetaType>

然后在子线程的构造函数中添加注册代码,如下所示:

qRegisterMetaType<SystemCfg>("SystemCfg");

重新编译运行,完美执行slot函数。

Make sure ‘SystemCfg‘ is registered using qRegisterMetaType相关推荐

  1. QT解决报错registered using qRegisterMetaType()

    在qt日常使用中,信号与槽机制是绝对不可或缺且常用的,其中的参数一般都会比较简单,bool.int.QString之类的,但当我们想要传递相对比较复杂的参数,例如QVector<int>. ...

  2. Qt线程错误记录registered using qRegisterMetaType()

    1.问题 在多线程连接信号槽,发送QVector& 类型时抛出错误: C++类,有些时候要是调用Qt的信号槽当做参数进行跨线程发送,就会出现如下问题: 这种情况一般,编译可以通过,但会出现如下 ...

  3. 【Qt】Qt再学习(十六):QObject::connect: Cannot queue arguments of type ‘QString‘

    1.问题描述 跨线程使用信号和槽时,如果是非const的引用传参,就会报如下的错误: QObject::connect: Cannot queue arguments of type 'QString ...

  4. QT子线程与主线程的信号槽通信

    最近用QT做一个服务器,众所周知,QT的主线程必须保持畅通,才能刷新UI.所以,网络通信端采用新开线程的方式.在涉及到使用子线程更新Ui上的控件时遇到了点儿麻烦.网上提供了很多同一线程不同类间采用信号 ...

  5. 如何在Qt中使用自定义数据类型

    这里我们使用下面这个struct来做说明(这里不管是struct还是class都一样): struct Player { int number; QString firstName; QString ...

  6. Qt知识点、疑难杂症的治疗

    Q: QVariant 保存指针数据 A1: 1,使用QVariant::fromValue((void*)target)保存数据 2,使用(ShortcutItem*)(v.value<voi ...

  7. QObject::connect: Cannot queue arguments of type xxx的解决方案

    问题描述 在跨线程的信号和槽的参数传递中, 参数的类型是自定义的类型, 然而此时出现了错误: QObject::connect: Cannot queue arguments of type 'Pos ...

  8. linux创建自定义组件qt,QT中的元对象系统:创建自定义的QT类型

    原创文章,转载请注明出处,谢谢! 作者:清林,博客名:飞空静渡 QVariant可以表示QT中的大部分类型,它和pascal中的variant类型或c中的void类型有点相似,不过它的使用和c中的un ...

  9. Qt多线程使用 和 信号与槽传参 需要注意的问题

    Qt中提供了线程类,默认窗口是主线程,这个时候如果我们的业务逻辑很费时,就会一直使用主线程,页面可能会卡顿甚至崩溃.那么将业务逻辑放入子线程,能够避免页面的卡顿,保证操作是流畅的,还能提高程序的执行效 ...

  10. QTcpSocket使用过程中的一些问题记录

    目前,在将原来C的socket通讯改为使用Qt类库QTcpSocket通讯,在修改过程中遇到不少问题,在此将问题一并记录,以备后面使用. 采用的通讯方式:QTimer定时器.QThread多线程和QT ...

最新文章

  1. 关于客户需求分析的讨论
  2. 【UGV】小车一些图片 麦轮版小车
  3. 串口与modem流量控制大全(2)
  4. Entity Framework 关系约束配置
  5. 随机信号功率谱估计方法matlab仿真
  6. js 的常用工具类库
  7. 我的口琴之路(附c调简谱)--------一个命中注定音乐巅峰是小星星的男人
  8. 晚清十大武林高手(电视里常引用的真实人物)
  9. 中国水煤浆行业“十四五”规划与运营模式分析报告2022~2028年
  10. CF #768 E.Flipping Ring
  11. linux gcc comand not,gcc: command not found
  12. 边吃烧烤边喝啤酒引发疾病
  13. 数据冗余技术—RAID
  14. linux objdump 函数,objdump命令
  15. windows 位图结构详解
  16. yolov8实现半标注
  17. word2016怎么去掉下面的红色波浪线
  18. 废品回收微信小程序开发方案
  19. 淘客基地公众号系统更新至v1.2.3版本
  20. 李嘉诚预言新操作系统即将面世 三星平台梦隐现

热门文章

  1. 2022-2027年(新版)中国钢铁产业运行状况及需求前景预测报告
  2. 新浪微博登陆页面html代码,仿新浪微博登陆邮箱提示效果的js代码
  3. QA智能问答(QQ匹配)
  4. 常用汉字库(约7千个)
  5. linux允许8000端口,Linux中如何开启8080端口供外界访问 和开启允许对外访问的端口8000...
  6. html动态生成tr标签,JS动态添加tr元素
  7. 计算四则表达式(中缀式转后缀式,然后计算结果)
  8. Axure RP小部件使用教程
  9. 黑苹果10.14.5安装WebDriver驱动nvidia独立显卡
  10. 微信测试是否被删软件,拒绝好友测试!教你在对方不知情下如何查看是否被微信好友删除...