Russian Qt Forum

Qt => Общие вопросы => Тема начата: Dancing_on_water от Март 20, 2013, 17:57



Название: Миграция на Qt5
Отправлено: Dancing_on_water от Март 20, 2013, 17:57
Есть проектик, написанный на Qt4.8.4 и Qwt6. Решил я его мигрировать на Qt5. Надеялся все-более пройдет гладко, но нет.

В moc-файле вылетает на строчке
Цитировать
*reinterpret_cast<int*>(_a[0]) = qRegisterMetaType< QVector<double>* >(); break;

С криком:
../../../Qt5/qt-everywhere-opensource-src-5.0.1/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h: In static member function 'static int QMetaTypeId2<T>::qt_metatype_id() [with T = QVector<double>*]':
../../../Qt5/qt-everywhere-opensource-src-5.0.1/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h:643:44:   instantiated from 'int qMetaTypeId(T*) [with T = QVector<double>*]'
../../../Qt5/qt-everywhere-opensource-src-5.0.1/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h:656:29:   instantiated from 'int qRegisterMetaType(T*) [with T = QVector<double>*]'
moc_CoreAutoFocuserManual.cpp:146:88:   instantiated from here
../../../Qt5/qt-everywhere-opensource-src-5.0.1/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h:534:97: error: 'qt_metatype_id' is not a member of 'QMetaTypeId<QVector<double>*>'

Есть ли более изящное решение, чем создавать хедер с набором  Q_DECLARE_METATYPE() ?






Название: Re: Миграция на Qt5
Отправлено: Vass от Март 20, 2013, 19:46
Посмотрите вот эту статью:
http://www.kdab.com/porting-from-qt-4-to-qt-5/

раздел "Missing Q_OBJECT macros and metatype cleanup"

Похоже ваш случай


Название: Re: Миграция на Qt5
Отправлено: Dancing_on_water от Март 20, 2013, 19:59
Да, именно это тот случай и похоже не остается других вариантов, кроме как для случаев типа QVectror<double>* создавать отдельный хедер, геморрой....
Чую вскоре  у каждого программиста будет хедер с простыней Q_DECLARE_METATYPE()  из стандартных типов.