2017-10-11 216 views
1

Q_ENUMQ_ENUMSの使用例を見て、Q_ENUMの定義を調べると、Q_ENUMSと他の定義が含まれていることがわかりました。Q_ENUMとQ_ENUMSの違い

Q_PROPERTY、Qml/QtQuick、信号/スロット、QVariant、qDebug()出力でenumを使用するときに書き込むものがわかりません。

Q_ENUMは、Q_ENUMSを使用して定義されているので、より良いものですが、ここでは推測しています。

違いは何ですか、なぜ2つありますか、どちらが優先されるべきですか?

+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'は推奨されておらず、もはや使用すべきではありません。 –