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 介面/外掛)進行轉換。