Название: Не работает макрос Q_DECLARE_METATYPE Отправлено: bibelwort от Август 11, 2011, 14:57 Здравствуйте!
У меня возникла проблема с регистрацией типа для использования с QVariant. А именно мне необходимо зарегистрировать следующий класс: Код: class MYLIBSHARED_EXPORT MapItem Сразу после определения класса, я регистрирую класс с помощью Q_DECLARE_METATYPE: Код: Q_DECLARE_METATYPE(MapItem) При сборке компилятор сообщает следующее: Код: ...\qmetatype.h:-1: In static member function 'static int QMetaTypeId2<T>::qt_metatype_id() [with T = MapItem*]': Раньше, когда я регистрировал типы типа struct все было нормально. Это первый раз, когда я регистрировал класс. Подскажите, если кто знает, в чем тут может быть дело? Название: Re: Не работает макрос Q_DECLARE_METATYPE Отправлено: Пантер от Август 11, 2011, 15:00 This macro makes the type Type known to QMetaType as long as it provides a public default constructor, a public copy constructor and a public destructor. It is needed to use the type Type as a custom type in QVariant.
Может, это? Название: Re: Не работает макрос Q_DECLARE_METATYPE Отправлено: GreatSnake от Август 11, 2011, 15:01 Тип используешь MapItem*. Его и надо объявлять:
Код
Название: Re: Не работает макрос Q_DECLARE_METATYPE Отправлено: bibelwort от Август 11, 2011, 15:15 Тип используешь MapItem*. Его и надо объявлять: Код
Если писать: Код: Q_DECLARE_METATYPE(MapItem*) то компилятор возвращает все с точностью до наоборот: Код: ...\qmetatype.h:-1: In static member function 'static int QMetaTypeId2<T>::qt_metatype_id() [with T = MapItem]': Поэтому я написал и Q_DECLARE_METATYPE(MapItem*) и Q_DECLARE_METATYPE(MapItem). Компилятор вроде не ругается больше. Спасибо! :) |