C++ Qt无法对类型为';uint8';即使是qRegisterMetaType

C++ Qt无法对类型为';uint8';即使是qRegisterMetaType,c++,qt,C++,Qt,我试图发送一个使用uint8\t作为参数的排队信号 我得到这个错误: QObject::connect: Cannot queue arguments of type 'uint8_t' (Make sure 'uint8_t' is registered using qRegisterMetaType().) 我添加了qRegisterMetaType()作为main()的第一行,我还将Q\u DECLARE\u元类型(uint8\u t)添加到每个文件包含的头文件中 我仍然会犯同样的错误。

我试图发送一个使用
uint8\t
作为参数的排队信号

我得到这个错误:

QObject::connect: Cannot queue arguments of type 'uint8_t'
(Make sure 'uint8_t' is registered using qRegisterMetaType().)
我添加了
qRegisterMetaType()
作为
main()
的第一行,我还将
Q\u DECLARE\u元类型(uint8\u t)
添加到每个文件包含的头文件中


我仍然会犯同样的错误。怎么回事?对于基本类型来说,这是一件很奇怪的事情,因为它适用于我的自定义类。

uint8\u t
unsigned char
typedef
。 您可以使用Qt的
typedef
来表示未签名字符:
quit8
,而无需注册它。任何具有公共默认构造函数、公共副本构造函数和公共析构函数的类或结构都可以在
QMetaType
中注册。您的
uint8\u t
是原子的,您不需要注册它,只需在Qt中使用适当的
typedef
。 无论如何,如果您想注册该类型,以便它可以被
QMetaProperty
或在
QueuedConnections
中使用,只需将其设置正确:

qRegisterMetaType<uint8_t>("uint8_t");
qRegisterMetaType(“uint8_t”);

有关
QtMeta
系统如何工作的更多信息,请阅读Qt的文档:

您是否使用其他基本类型(如
uint16\u t
)对其进行了测试?