Qt:이 없는 메타데이터에 의해 meta.enumeratorCount()열거에 Q_OBJECT,왜?

StackOverflow https://stackoverflow.com//questions/11679057

  •  12-12-2019
  •  | 
  •  

문제

나는 다음과 같은 클래스는 곳에 나를 얻으려고 일부의 메타데이터 enum MyEnum.그러나,경우루 meta.enumeratorCount() 수은 항상 0.기본적으로 내가 다음 이 예제.를 찾기 위해서는,문제도 이와 같은 방법도 같은 문제 방법 count0.코드를 컴파일하고,오류 없이 없는 경고입니다.

어야 바보 같은 실수....어쩌면 당신이 도움이 될 수 있습니다 me

class FsxSimConnectQtfier : public QObject
{
    Q_OBJECT
public:
    explicit FsxSimConnectQtfier(QObject *parent = 0);
    enum MyEnum { G1, G2 };
    static const QString simConnectExceptionToString(const DWORD id);
};

const QString FsxSimConnectQtfier::simConnectExceptionToString(const DWORD id) {
    // int i= FsxSimConnectQtfier::staticMetaObject.indexOfEnumerator("MyEnum");
    // -1 -> not found, why?
    QMetaObject meta = FsxSimConnectQtfier::staticMetaObject;
    for (int i=0; i < meta.enumeratorCount(); ++i) {
        QMetaEnum m = meta.enumerator(i); // never reached, why?
    }
    return "";
}
도움이 되었습니까?

해결책

당신이 등록하는 데 필요한 열거된 메타데이터를 사용하여 시스템 Q_ENUMS() 매크로:

class FsxSimConnectQtfier : public QObject
{
    Q_OBJECT
    Q_ENUMS(MyEnum)  // <--- 

public:
    explicit FsxSimConnectQtfier(QObject *parent = 0);
    enum MyEnum { G1, G2 };
    static const QString simConnectExceptionToString(const unsigned int id);
};
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top