QGADGET宏类似于Q_OBJECT宏,是一个万能容器,至于这个宏所实现的功能,我也不懂,Q_OBJECT宏的功能到时了解一些,我想他们应该差不多,要想使用从Q_OBJECT继承来的类,就得在一开始,大括号下的第一行,不在public、slots等的里面,写下这个宏。
同样的,你定义的类若不是从Q_OBJECT继承而来,那就得使用宏QGADGET对你的数据类型(例如结构体)或者类声明的开始位置写入QGADGET。
使用万能容器QGADGET修饰的类可以使用QMetaObject提供的一些函数功能,请注意,
Q_GADGETs can have Q_ENUM, Q_PROPERTY and Q_INVOKABLE,Q_GADGETs can have Q_ENUM, Q_PROPERTY and Q_INVOKABLE, ***but they cannot have signals or slots***
Q_GADGET makes a class member, staticMetaObject, available. staticMetaObject is of type QMetaObject and provides access to the enums declared with Q_ENUMS.
//即它可以用属性机制,枚举机制,函数机制,但不可以用信号和槽机制。