2017-10-11 38 views
1

Q_ENUMQ_ENUMS의 사용법을 보여주는 여러 예제를 발견했으며 Q_ENUM의 정의를 살펴보면 Q_ENUMS 및 기타 정의가 포함 된 것으로 나타났습니다.Q_ENUM과 Q_ENUMS의 차이점

Q_PROPERTY, Qml/QtQuick, 신호/슬롯, QVariant 및 qDebug() 출력에서 ​​열거 형을 사용할 때 작성할 글이 확실하지 않습니다.

Q_ENUMQ_ENUMS을 사용하여 정의되었으므로 더 나은 것으로 보이지만 여기서는 추측하고 있습니다.

정확히 차이점은 무엇이며 왜 두 가지가 모두 있고 어느 것이 좋습니다?

+0

[관련된 (https://woboq.com/blog/q_enum.html) – AMA

답변

1

읽기 :

거기 Qt documentation에서의 사용을 보여주는 예입니다

Q_ENUMS를 대체하는 Q_ENUM이 추가되어 QMetaEnum을 사용하여 컴파일 할 때 QMetaEnum을 가져올 수 있습니다. :: fromType. 이러한 열거 형은 이제 자동으로 메타 유형으로 등록되며 QVariant 내에서 문자열로 변환되거나 qDebug()에 의해 문자열로 인쇄 될 수 있습니다.

1

Qt 5.5 Q_ENUMS은 더 이상 사용되지 않으므로 더 나은 Q_ENUM으로 바뀝니다. , Q_ENUM-Q_ENUMS에서 움직임 뒤에 이유에 대한 자세한 내용

class MyClass : public QObject 
{ 
    Q_OBJECT 
    Q_PROPERTY(Priority priority READ priority WRITE setPriority NOTIFY priorityChanged) 

public: 
    MyClass(QObject *parent = 0); 
    ~MyClass(); 

    enum Priority { High, Low, VeryHigh, VeryLow }; 
    Q_ENUM(Priority) 

    void setPriority(Priority priority) 
    { 
     m_priority = priority; 
     emit priorityChanged(priority); 
    } 

    Priority priority() const 
    { 
     return m_priority; 
    } 

signals: 
    void priorityChanged(Priority); 

private: 
    Priority m_priority; 
}; 

What's New in Qt 5.5 말한다 this blog entry

+0

가 '와'Q_ENUM' Q_ENUMS' 또는 단순히 'Q_ENUM' 방법이 사용될 수 사이의 차이를 설명하는데 예는? – HelloGoodbye

+0

@HelloGoodbye이 예제는'Q_ENUM'을 사용하는 방법을 보여줍니다. 'Q_ENUMS'은 더 이상 사용되지 않아야합니다. –