C

枚举 QML 基本类型

一个命名枚举值。 更多信息...

枚举 类型指代一个命名的枚举值。

每个命名值都可以作为 <Type>.<value> 引用。例如,Text 类型拥有一个 AlignRight 枚举值

Text { horizontalAlignment: Text.AlignRight }

当与 C++ 集成时,注意从 C++ 传递到 QML 的任何 enum 值都会自动转换为 枚举 值,反之亦然。

此基本类型由 QML 语言提供。一些枚举值由 QtQuick 导入提供。

在 QML 中使用枚举类型

枚举 类型是 C++ enum 类型的表示。可以在 QML 中引用 枚举 类型;但相反,当从 QML 代码引用 枚举 值时,应当使用 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 许可证下提供。
了解更多。