繁体   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