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
)对其进行了测试?