QML에서 사용하기 위해 QFlags를 내보내려고했지만 (주로 QML로 노출 된 객체의 속성에서 읽으려고했습니다), 계속해서 this SO question을 계속합니다. 점점 컴파일러 오류 :QML (Qt 5)로 QFlags 내보내기 - staticMetaObject에서 오류가 발생했습니다.
#ifndef HOLIDAYACTIVITIES_H
#define HOLIDAYACTIVITIES_H
#include <QObject>
#include <QMetaType>
#include <QPair>
#include <QObject>
#include <QDateTime>
#include <QGeoLocation>
namespace HolidayPlanner
{
class Holiday: public QObject {
Q_OBJECT
Q_ENUMS(ActivityType)
Q_ENUMS(TransportType)
public:
explicit Holiday(QObject* parent = 0);
virtual ~Holiday();
enum ActivityType {
Transportation = 1,
Lodging = 2,
Sights = 4,
Note = 8,
Food = 16
};
enum TransportType {
Flight = 1,
Train = 2,
Subway = 4,
Bus = 8,
Foot = 16,
Other = 32,
None = 64
};
enum ItemRole {
TypeRole = Qt::UserRole + 1000,
StartDateRole = Qt::UserRole + 1001,
EndDateRole = Qt::UserRole + 1002,
StartPositionRole = Qt::UserRole + 1003,
EndPositionRole = Qt::UserRole + 1004,
TaskRole = Qt::UserRole + 1005,
};
Q_DECLARE_FLAGS(ActivityTypes, ActivityType)
Q_FLAGS(ActivityTypes)
Q_DECLARE_FLAGS(TransportTypes, TransportType)
Q_FLAGS(ActivityTypes)
};
Q_DECLARE_OPERATORS_FOR_FLAGS(Holiday::ActivityTypes)
Q_DECLARE_OPERATORS_FOR_FLAGS(Holiday::TransportTypes)
}; // namespace HolidayPlanner
Q_DECLARE_METATYPE(HolidayPlanner::Holiday::ActivityType)
Q_DECLARE_METATYPE(HolidayPlanner::Holiday::TransportType)
하지만 코드에서
qmlRegisterType<HolidayPlanner::Holiday::ActivityType>();
어디서나 실행할 때, 나는
In file included from /usr/include/qt5/QtQml/QtQml:9:0,
from /home/lb/Coding/cpp/holiday-planner/src/holidayactivities.cpp:21:
/usr/include/qt5/QtQml/qqml.h: In instantiation of ‘int qmlRegisterType() [with T =
HolidayPlanner::Holiday::ActivityType]’:
/home/lb/Coding/cpp/holiday-planner/src/holidayactivities.cpp:28:60: required from here
/usr/include/qt5/QtQml/qqml.h:109:5: error: ‘staticMetaObject’ is not a member of
‘HolidayPlanner::Holiday::ActivityType’
QML_GETTYPENAMES
^
/usr/include/qt5/QtQml/qqml.h:119:21: error: ‘staticMetaObject’ is not a member of
‘HolidayPlanner::Holiday::ActivityType’
0, 0, 0, 0, &T::staticMetaObject,
^
를 얻을 수
무엇이 잘못되었을 수 있습니까?
참고로 QLocale과 같은 다른 클래스는 열거 형을 QML로 내보낼 수 있습니다 (기본적으로 완료되지는 않지만 작동합니다). 그러나 제 경우에는 작동하지 않는 이유에 대한 단서를 찾을 수 없습니다.
어디에서 HolidayPlanner 클래스를 등록합니까? 나는 그것을 볼 수 없다. – lpapp