qobject cast
T qobject_cast(QObject *object)
通过从 QObject
派生并使用 Q_OBJECT
宏添加的功能是使用 qobject_cast
的能力。
例:
class myObject : public QObject
{
Q_OBJECT
//...
};
QObject* obj = new myObject();
要检查 obj
是否是 myObject
类型并将其转换为 C++,你通常可以使用 dynamic_cast
。这取决于在编译期间启用 RTTI。
另一方面,Q_OBJECT 宏生成转换检查和可在 qobject_cast 中使用的代码。
myObject* my = qobject_cast<myObject*>(obj);
if(!myObject)
{
//wrong type
}
这不依赖于 RTTI。并且还允许你跨动态库边界(通过 Qt 接口/插件)进行转换。