Loading

【QT】如何在信号中带上自定义类型参数?

一、问题描述

在qt开发软件时,使用信号与槽机制,信号中带了自定义的枚举类型参数,在emit发出信号时,出现以下错误

QObject::connect: Cannot queue arguments of type 'XXX'

二、解决方法

在main.cpp中添加头文件:

#include <QMetaType>

然后使用qRegisterMetaType注册自定义类型到元对象系统中,主要作用为QObject的属性系统(信号槽)中使用该自定义类型。

qRegisterMetaType<MyType>("MyType");

qRegisterMetaType使用的情况

qRegisterMetaType 必须使用的两种情况

  • 如果非QMetaType内置类型要在 Qt 的属性系统中使用
  • 如果非QMetaType内置类型要在 queued 信号与槽 中使用
posted @ 2021-04-27 10:27  李春港  阅读(762)  评论(0编辑  收藏  举报