Перевести QVariant обратно в мой указатель на объект |
Здравствуйте, гость ( Вход | Регистрация )
Перевести QVariant обратно в мой указатель на объект |
kruger |
27.10.2015, 10:51
Сообщение
#1
|
Студент Группа: Новичок Сообщений: 15 Регистрация: 6.10.2015 Пользователь №: 4459 Спасибо сказали: 0 раз(а) Репутация: 0 |
У меня есть класс производный от QObject.
Я его засовываю в QVariant таким образом:
Обратно пытаюсь перевести так: Но появляется такая ошибка:Цитата /usr/include/qt4/QtCore/qmetatype.h:169:80: error: 'qt_metatype_id' is not a member of 'QMetaTypeId<CMyStatus*>' static inline int qt_metatype_id() { return QMetaTypeId<T>::qt_metatype_id(); } Как правильно получить мой объект из QVariant? |
|
|
Litkevich Yuriy |
27.10.2015, 12:25
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Я его засовываю в QVariant таким образом: а зачем ты к QObject * приводишь? Так ты из QVariant-а только указатель на QObject и сможешь вынуть.QVariant::fromValue<QObject *>(pStatus); См. доку по T QVariant::value () const и void QVariant::setValue ( const T & value ) Этого достаточно Сообщение отредактировал Litkevich Yuriy - 27.10.2015, 12:27 |
|
|
ViGOur |
27.10.2015, 12:31
Сообщение
#3
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Тут всё намного проще чем кажется, просто после объявления твоего класса CMyStatus добавь строчку:
И всё заработает!
|
|
|
kruger |
27.10.2015, 12:52
Сообщение
#4
|
Студент Группа: Новичок Сообщений: 15 Регистрация: 6.10.2015 Пользователь №: 4459 Спасибо сказали: 0 раз(а) Репутация: 0 |
а зачем ты к QObject * приводишь? Так ты из QVariant-а только указатель на QObject и сможешь вынуть. А как же виртуальное наследование и прочее? Это мысли в слух. Ты прав, поменяв с QObject на CMyStatus, стал получать валидный указатель, а до этого был 0x0, что странно!В qvariant_cast приведение происходит с помощью reinterpret_cast, а не dynamic_cast, тогда почему 0x0 в случае с приведением объекта к родителю и последующим прведением к QVariant? |
|
|
Текстовая версия | Сейчас: 24.11.2024, 10:36 |