C
enumeration QML Value Type
名前付き列挙値。さらに...
- enumeration はQt for MCUs QML Basic Types の一部です。
詳しい説明
enumeration 型は名前付き列挙値を指す。
それぞれの名前付き値は<Type>.<value> として参照することができます。例えば、Text 型はAlignRight 列挙値を持ちます:
Text { horizontalAlignment: Text.AlignRight }
C++と統合する場合、C++からQMLに渡されたenum の値は自動的にenumeration の値に変換され、その逆も同様であることに注意してください。
この基本型はQML言語が提供するものです。いくつかの列挙型の値はQtQuick のインポートによって提供されます。
QMLにおける列挙型の使用
enumeration 型はC++のenum 型を表現したものです。QMLの中でenumeration 型を参照することは可能ですが、QMLのコードからenumeration の値を参照する場合には、int 型を使用しなければなりません。
例えば
import QtQuick 2.15 Item { // refer to Text.AlignRight using an int type property int enumValue: textItem.horizontalAlignment signal valueEmitted(int someValue) Text { id: textItem horizontalAlignment: Text.AlignRight } // emit valueEmitted() signal, which expects an int, with Text.AlignRight Component.onCompleted: valueEmitted(Text.AlignRight) }
同じ列挙子を持つ列挙型の定義
場合によっては、同じ列挙子を持つ列挙を数多く定義したいことがあります:
Item {
enum DeviceUnits {
Unknown,
Metric,
Imperial
}
enum AppUnits {
Unknown,
Metric,
Imperial
}
}上記のような同じ列挙子を使用する方法はQt Quick Ultralite ではサポートされていませんが、同じ結果を得るためのオプションがあります。
- 列挙子には賢明な接頭辞を使用してください:
Item { enum DeviceUnits { D_Unknown, D_Metric, D_Imperial } enum AppUnits { A_Unknown, A_Metric, A_Imperial } } - 同じqmlファイル内だけで列挙子を使用する場合、それらを名前付きインラインコンポーネントでラップしてください:
- あるいは、列挙子ごとに別のqmlファイルを作成する:
// DeviceUnits.qml QtObject { enum DeviceUnits { Unknown, Metric, Imperial } }
// AppUnits.qml QtObject { enum AppUnits { Unknown, Metric, Imperial } }
QML 基本型、プロパティ型としての列挙型、QML オブジェクト - 列挙属性も参照してください 。