Название: QVariant: как извлечь из него список пользовательских структур ? Отправлено: Cyrax от Январь 10, 2008, 22:26 В QVariant запихиваю объект QList<parameterValue>, где parameterValue - моя структура.
Вернее, в методе data моей модели данных возвращаю структуру типа parameterValue. Затем пытаюсь эту структуру оттуда извлечь (value - типа QVariant с данной структурой внутри): Цитировать ... = value.value<parameterValue>; В результате получаю:Цитировать c:/GPL/Qt/4.3.1/include/QtCore/../../src/corelib/kernel/qmetatype.h instantiated from `int qMetaTypeId(T*) [with T = QList<parameterValue>]' c:/GPL/Qt/4.3.1/include/QtCore/../../src/corelib/kernel/qmetatype.h `qt_metatype_id' is not a member of `QMetaTypeId<QList<parameterValue> >' c:/GPL/Qt/4.3.1/include/QtCore/../../src/corelib/kernel/qvariant.h instantiated from `T qvariant_cast(const QVariant&) [with T = QList<parameterValue>]' c:/GPL/Qt/4.3.1/include/QtCore/../../src/corelib/kernel/qvariant.h instantiated from `T qvariant_cast(const QVariant&) [with T = QList<parameterValue>]' c:/GPL/Qt/4.3.1/include/QtCore/../../src/corelib/kernel/qvariant.h instantiated from `T qVariantValue(const QVariant&) [with T = QList<parameterValue>]' Т.е. как передавать свои структуры через объект QVariant (метод data модели данных может передать только QVariant) ? Название: Re: QVariant: как извлечь из него список пользовательских структур ? Отправлено: pastor от Январь 10, 2008, 22:50 Немного непонятен вопрос, что именно нужно установить\получить в качестве данных для QVariant: список структур или саму структуру.
Для структуры я делал вот так: Код: typedef struct SolutionTag Название: Re: QVariant: как извлечь из него список пользовательских структур ? Отправлено: Cyrax от Январь 10, 2008, 23:25 Мне нужно из QVariant'а извлечь объект типа QList<SolutionTag>, где SolutionTag - некоторая структура...
Название: Re: QVariant: как извлечь из него список пользовательских структур ? Отправлено: pastor от Январь 11, 2008, 01:05 как вариант можно попробывать сделать так:
Код: typedef struct SolutionTag Название: Re: QVariant: как извлечь из него список пользовательских структур ? Отправлено: Cyrax от Январь 11, 2008, 13:18 Так работает. Причём работает и без указателей:
Цитировать typedef QList<Solution> SolutionList; Q_DECLARE_METATYPE(SolutionList); Тогда может и так сработает (без typedef'а): Q_DECLARE_METATYPE(QList<Solution>); Название: Re: QVariant: как извлечь из него список пользовательских структур ? Отправлено: pastor от Январь 11, 2008, 16:43 typedef для красивости :) Скажем так рюшичек ;)
Название: Re: QVariant: как извлечь из него список пользовательских структур ? Отправлено: Cyrax от Январь 12, 2008, 13:20 А с enum'ами так не прокатывает.
Приходися вначале QVariant в int перегонять, затем в тип моего перечисления: Цитировать (myEnum)variant.value<int> |