我在基于QObject
的课程中有一个枚举和一个属性,如:
Q_ENUMS(StateEnum)
Q_PROPERTY(StateEnum state READ state NOTIFY stateChanged)
当我尝试emit stateChanged(state)
时,收到错误:
QObject::connect: Cannot queue arguments of type 'StateEnum'
(Make sure 'StateEnum' is registered using qRegisterMetaType().)
为什么我需要调用qRegisterMetaType
?我认为这就是Q_ENUMS
的作用。
答案 0 :(得分:2)
您正在寻找Q_ENUM()
macro。这将取代现已弃用的Q_ENUMS
并自动注册元类型。
您的代码应如下所示:
Q_ENUM(StateEnum) //note the missing 'S' here
Q_PROPERTY(StateEnum state READ state NOTIFY stateChanged)