crossplatform.ru

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


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

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

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


Последние 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 Рейтинг@Mail.ru Текстовая версия Сейчас: 12.7.2025, 7:46