crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Перевести QVariant обратно в мой указатель на объект
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
kruger Дата 27.10.2015, 12:52
 
Цитата(Litkevich Yuriy @ 27.10.2015, 12:25) *
а зачем ты к QObject * приводишь? Так ты из QVariant-а только указатель на QObject и сможешь вынуть.
А как же виртуальное наследование и прочее? Это мысли в слух. Ты прав, поменяв с QObject на CMyStatus, стал получать валидный указатель, а до этого был 0x0, что странно!
В qvariant_cast приведение происходит с помощью reinterpret_cast, а не dynamic_cast, тогда почему 0x0 в случае с приведением объекта к родителю и последующим прведением к QVariant?
ViGOur Дата 27.10.2015, 12:31
  Тут всё намного проще чем кажется, просто после объявления твоего класса CMyStatus добавь строчку:
Q_DECLARE_METATYPE(CMyStatus*)
И всё заработает! :)
Litkevich Yuriy Дата 27.10.2015, 12:25
 
Цитата(kruger @ 27.10.2015, 12:51) *
Я его засовываю в QVariant таким образом:
QVariant::fromValue<QObject *>(pStatus);
а зачем ты к QObject * приводишь? Так ты из QVariant-а только указатель на QObject и сможешь вынуть.

См. доку по
T QVariant::value () const
и void QVariant::setValue ( const T & value )
Этого достаточно
kruger Дата 27.10.2015, 10:51
  У меня есть класс производный от QObject.
Я его засовываю в QVariant таким образом:
QVariant::fromValue<QObject *>(pStatus);

Обратно пытаюсь перевести так:
CMyStatus *pObj = qvariant_cast<CMyStatus *>( var );
Но появляется такая ошибка:
Цитата
/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?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 1:50