gpt4 book ai didi

c++ - QVariant 自定义类多态性

转载 作者:行者123 更新时间:2023-11-28 06:03:34 27 4
gpt4 key购买 nike

我有这样一个类层次结构:

class Base {
...
virtual QWidget* getEditor();
...
}

class Derived {
...
QWidget* getEditor() Q_DECL_OVERRIDE;
...
}

这两个类都是通过 Q_DECLARE_METATYPE() 注册的

我正在从 QVariant 获取基类的实例。是否有可能从 QVariant 获取一个指针,以便能够从 Derived 对象调用 getEditor()

我正在尝试这个 atm 但没有成功:

if (index.data(Qt::EditRole).canConvert<Base>())
return index.data(Qt::EditRole).value<Base>().getEditor(parent);

这个 snipper 调用基类方法。

最佳答案

你需要让你的基类的函数virtual来启用多态:

class Base {
...
virtual QWidget* getEditor();
...
}

class Derived {
...
QWidget* getEditor() Q_DECL_OVERRIDE;
...
}

此外,您现在拥有它的方式将导致 object slicing .您需要获取指向 Derived 的指针,并调用该指针上的函数。

关于c++ - QVariant 自定义类多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32824580/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com