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.