QML-Aufzählungen
In QML verwendete Aufzählungen können entweder in QML oder in C++ definiert werden.
Informationen zum Definieren von Aufzählungen in QML finden Sie unter „Aufzählungsattribute“.
Wenn sie in C++ definiert werden, müssen für QML zugängliche Aufzählungen mit den Makros „ Q_ENUM “ oder „ Q_ENUM_NS “ gekennzeichnet sein und Teil eines Typs sein, der über die Makros „ QML_NAMED_ELEMENT “ oder „ QML_ELEMENT “ für QML zugänglich gemacht wird. Weitere Details finden Sie unter „Aufzählungstypen“.
Nur benannte QML-Typen können in QML verwendbare Aufzählungen enthalten. Jede Aufzählung muss von einem benannten Typ umschlossen sein. QML-Namensräume sind ebenfalls QML-Typen und können Aufzählungen enthalten.
Daher kann auf einen Enumerationswert wie folgt verwiesen werden: ` <Type>.<Value>`. Der Typ ` Text ` verfügt beispielsweise über den Enumerationswert ` AlignRight `:
Text { horizontalAlignment: Text.AlignRight }Enumerationswerte sind Eigenschaften der durch den Typnamen erzeugten Typreferenz. Sie können sie auch mithilfe der eckigen Klammer-Syntax von JavaScript abrufen, was jedoch fehleranfällig ist und nicht empfohlen wird:
// Avoid this if possible
Text { horizontalAlignment: Text["AlignRight"] }Verwendung von Aufzählungen in QML
Aufzählungen sind in QML keine eigenständigen Typen, sondern Eigenschaften der sie umgebenden Typen. Ein Aufzählungswert wird als der zugrunde liegende Typ der Aufzählung dargestellt. Bei den meisten Aufzählungen ist es unbedenklich, den JavaScript-Typ „Number“ oder den QML-Typ „double“ zu ihrer Speicherung zu verwenden. Bei 64-Bit-Ganzzahlen funktioniert dies jedoch nicht immer, da deren Wertebereich den sicheren Ganzzahlbereich von 64-Bit-Doubles überschreitet. Daher können Aufzählungen mit Werten außerhalb des sicheren Ganzzahlbereichs (von -(2⁵³ - 1) bis einschließlich 2⁵³ - 1) in QML nicht sicher verwendet werden. Für Aufzählungen mit Werten, die in den numerischen Bereich einer 32-Bit-Ganzzahl mit Vorzeichen passen, kannst du den QML-Typ „int“ sicher zur Speicherung verwenden.
Beispiel:
import QtQuick
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)
}Hilfsfunktionen für Aufzählungsschlüssel-Zeichenketten <-> Schlüsselwerte
Das globale Qt-Objekt stellt Hilfsmethoden bereit, die den Namen eines Schlüssels in der Aufzählung seinem numerischen Wert zuordnen können oder umgekehrt.
- Qt.enumStringToValue: Ordnet eine Zeichenkette, die den Namen eines Schlüssels enthält, seinem numerischen Wert zu
- Qt.enumValueToString: ordnet einen Wert dem Namen eines Schlüssels mit diesem Wert zu
- Qt.enumValueToStrings: ordnet einen Wert einer Liste von Namen der Schlüssel zu, die diesen Wert haben
Beispiel:
// Main.qml
import QtQml
Item {
enum E { Black = 0, White = 1, Grey = 2, Gray = 2 }
// 1 (White)
property int i: Qt.enumStringToValue(Main.E, "White")
// "Black"
property string s: Qt.enumValueToString(Main.E, Main.E.Black)
// ["Grey", "Gray"]
property list<string> ss: Qt.enumValueToStrings(Main.E, Main.E.Grey)
}Siehe auch „QML-Werttypen“, „Enumerationsattribute“, „Enumerationstypen“, „ QtQml::Qt::enumStringToValue “, „ QtQml::Qt::enumValueToString “ und „ QtQml::Qt::enumValueToStrings “.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.