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