我有这样的类层次结构:
class Base {
...
virtual QWidget* getEditor();
...
}
class Derived {
...
QWidget* getEditor() Q_DECL_OVERRIDE;
...
}
这两个类都是通过Q_DECLARE_METATYPE()注册的
我从QVariant获得Base类的实例 . 是否有可能从QVariant获取 pointer 能够从Derived对象调用 getEditor()
?
我正在尝试这个atm但没有成功:
if (index.data(Qt::EditRole).canConvert<Base>())
return index.data(Qt::EditRole).value<Base>().getEditor(parent);
此snipper调用Base类方法 .
1 回答
您需要使您的基类'function
virtual
启用多态:此外,你现在的方式将导致object slicing . 您将需要获取指向
Derived
的指针,并在该指针上调用该函数 .