簡體   English   中英

QVariant自定義類多態性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM