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