[英]QVariant custom classes polymorphism
我有這樣的類層次結構:
class Base {
...
virtual QWidget* getEditor();
...
}
class Derived {
...
QWidget* getEditor() Q_DECL_OVERRIDE;
...
}
這兩個類都通過Q_DECLARE_METATYPE()注冊
我從QVariant獲取基類的實例。 是否可以從QVariant獲取指針 ,以便能夠從派生對象調用getEditor()
?
我正在嘗試此atm,但沒有成功:
if (index.data(Qt::EditRole).canConvert<Base>())
return index.data(Qt::EditRole).value<Base>().getEditor(parent);
此偵聽器調用基類方法。
您需要將基類的函數virtual
以啟用多態性:
class Base {
...
virtual QWidget* getEditor();
...
}
class Derived {
...
QWidget* getEditor() Q_DECL_OVERRIDE;
...
}
而且,您現在擁有的方式將導致對象切片 。 您將需要獲取一個指向Derived
的指針,並在該指針上調用函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.