Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
|
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
|
Цитата(kruger @ 27.10.2015, 12:51) Link Я его засовываю в QVariant таким образом: а зачем ты к QObject * приводишь? Так ты из QVariant-а только указатель на QObject и сможешь вынуть.QVariant::fromValue<QObject *>(pStatus); См. доку по Link и Link Этого достаточно Сообщение отредактировал 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
|
Цитата(Litkevich Yuriy @ 27.10.2015, 12:25) Link а зачем ты к QObject * приводишь? Так ты из QVariant-а только указатель на QObject и сможешь вынуть. А как же виртуальное наследование и прочее? Это мысли в слух. Ты прав, поменяв с QObject на CMyStatus, стал получать валидный указатель, а до этого был 0x0, что странно!В qvariant_cast приведение происходит с помощью reinterpret_cast, а не dynamic_cast, тогда почему 0x0 в случае с приведением объекта к родителю и последующим прведением к QVariant? |
|
|
|
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 22.12.2025, 1:47 |