У меня есть такая иерархия классов:QVariant пользовательских классов полиморфизм
class Base {
...
virtual QWidget* getEditor();
...
}
class Derived {
...
QWidget* getEditor() Q_DECL_OVERRIDE;
...
}
Оба класса регистрируется с помощью Q_DECLARE_METATYPE()
я получаю экземпляр базового класса из QVariant. Можно ли получить указатель от QVariant, чтобы иметь возможность вызывать getEditor()
из производного объекта?
Я пытаюсь это атм, но не имею никакого успеха:
if (index.data(Qt::EditRole).canConvert<Base>())
return index.data(Qt::EditRole).value<Base>().getEditor(parent);
Этот Snipper вызывающего метод класса Base.
Отредактировано мое сообщение. Вопрос в том, как мне получить указатель от QVariant :: value <>() – Eckler
@Eckler, чтобы получить указатель из 'QVariant', вы должны сначала сохранить этот указатель в' QVariant', поэтому, видимо, вам придется изменить свой код для хранения указателей, а не объектов. – SingerOfTheFall
Должен ли я изменить Q_DECLARE_METATYPE (Base) на Q_DECLARE_METATYPE (Base *) в этом случае? – Eckler