0
我有這樣的類層次結構:的QVariant自定義類多態性
class Base {
...
virtual QWidget* getEditor();
...
}
class Derived {
...
QWidget* getEditor() Q_DECL_OVERRIDE;
...
}
兩個類都通過Q_DECLARE_METATYPE()註冊
我從獲得的QVariant Base類的實例。是否可以從QVariant獲得指針以便能夠從Derived對象調用getEditor()
?
我想這樣ATM,但沒有成功:
if (index.data(Qt::EditRole).canConvert<Base>())
return index.data(Qt::EditRole).value<Base>().getEditor(parent);
這剪斷調用基類的方法。
編輯我的帖子。問題是我應該如何從QVariant :: value <>() – Eckler
@Eckler獲得指針,爲了從'QVariant'獲得指針,您必須首先將該指針存儲在'QVariant'中,所以顯然您必須更改代碼存儲指針,而不是對象。 – SingerOfTheFall
我是否應該將Q_DECLARE_METATYPE(Base)更改爲Q_DECLARE_METATYPE(Base *)是否是這種情況? – Eckler