このページでは

C

enumeration QML Value Type

名前付き列挙値。さらに...

詳しい説明

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ファイル内だけで列挙子を使用する場合、それらを名前付きインラインコンポーネントでラップしてください:
    Item {
        component D : QtObject {
            enum DeviceUnits {
                Unknown,
                Metric,
                Imperial
            }
        }
    
        component A : QtObject {
            enum AppUnits {
                Unknown,
                Metric,
                Imperial
            }
        }
    }
  • あるいは、列挙子ごとに別のqmlファイルを作成する:
    // DeviceUnits.qml
    QtObject {
        enum DeviceUnits {
            Unknown,
            Metric,
            Imperial
        }
    }
    // AppUnits.qml
    QtObject {
        enum AppUnits {
            Unknown,
            Metric,
            Imperial
        }
    }

QML 基本型プロパティ型としての列挙型QML オブジェクト - 列挙属性も参照してください


Qt のライセンスによっては利用可能です。