QT: Проблема, как я могу вернуть свой собственный производный класс QObject как «QVariant»? - PullRequest
2 голосов
/ 18 марта 2011

Реализация производного метода «QAbstractListModel :: data».

Q_DECLARE_METATYPE (myType);даже не компилируется ...возврат моего пользовательского объекта приводит к ошибке компиляции.

Как это можно сделать?

Ответы [ 2 ]

4 голосов
/ 18 марта 2011
QVariant::fromValue<QObject *>(object);

замените QObject вашим собственным типом, но используйте для него Q_DECLARE_METATYPE. Имейте в виду, что вы объявляете: MyType или MyType *. Поскольку вы говорите о передаче объекта из QAbstractItemModel::data, то я полагаю, что вы хотите предоставить указатель на объект, это правильно? Если так, то объявите это так:

typedef MyType * MyTypeStar
Q_DECLARE_METATYPE(MyTypeStar);

Это сделает MyType * известной системе мета-типов.

Если вы хотите обойти сам объект, то объявите, как вы пытались, но убедитесь, что вы правильно определили свой тип:

Q_DECLARE_METATYPE: Этот макрос делает тип Type известным QMetaType до тех пор, пока он предоставляет открытый конструктор по умолчанию, открытый конструктор копирования и открытый деструктор. Необходимо использовать тип Type как пользовательский тип в QVariant.

2 голосов
/ 18 марта 2011

Почему бы не поместить его в QVariant как QObject?qVariantFromValue (youObjectPointer)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...