QML 열거형
QML에서 사용되는 열거형은 QML 또는 C++에서 정의할 수 있습니다.
QML에서 열거형을 정의하는 방법에 대한 자세한 내용은 열거형 속성을 참조하십시오.
C++에서 정의된 경우, QML에 노출되는 열거형은 ` Q_ENUM ` 또는 ` Q_ENUM_NS ` 매크로로 표시되어야 하며, ` QML_NAMED_ELEMENT ` 또는 ` QML_ELEMENT ` 매크로를 통해 QML에 노출되는 유형의 일부여야 합니다. 자세한 내용은 열거형 유형을 참조하십시오.
QML에서 사용할 수 있는 열거형은 이름이 지정된 QML 유형에만 포함될 수 있습니다. 각 열거형은 이를 둘러싸는 이름이 지정된 유형을 가져야 합니다. QML 네임스페이스도 QML 유형이며 열거형을 포함할 수 있습니다.
따라서 열거형 값은 ` <Type>.<Value>` 형태로 참조할 수 있습니다. 예를 들어, ` Text ` 유형에는 ` AlignRight `라는 열거형 값이 있습니다:
Text { horizontalAlignment: Text.AlignRight }열거형 값은 유형 이름으로 생성된 유형 참조의 속성입니다. 자바스크립트의 대괄호 구문을 사용하여 열거형 값을 가져올 수도 있지만, 이는 오류가 발생하기 쉬우므로 권장하지 않습니다:
// Avoid this if possible
Text { horizontalAlignment: Text["AlignRight"] }QML에서 열거형 사용하기
QML에서 열거형은 별도의 유형이 아니라, 이를 둘러싼 유형의 속성입니다. 열거형 값은 열거형의 기본 유형으로 표현됩니다. 대부분의 열거형의 경우, JavaScript의 Number 유형이나 QML의 double 유형을 사용하여 안전하게 저장할 수 있습니다. 그러나 64비트 정수의 경우, 그 범위가 64비트 double의 안전한 정수 범위를 초과하므로 항상 작동하는 것은 아닙니다. 따라서 안전한 정수 범위(-(2^53 - 1)부터 2^53 - 1까지, 양쪽 끝 포함)를 벗어난 값을 가진 열거형은 QML에서 안전하게 사용할 수 없습니다. 값이 32비트 부호 있는 정수의 수치 범위에 들어가는 열거형의 경우, QML의 int 유형을 저장소로 안전하게 사용할 수 있습니다.
예를 들어:
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)
}열거형 키 문자열 <-> 키 값 헬퍼
Qt 전역 객체는 열거형의 키 이름을 해당 숫자 값으로 매핑하거나 그 반대로 매핑할 수 있는 헬퍼 메서드를 제공합니다.
- Qt.enumStringToValue: 키 이름을 포함하는 문자열을 해당 숫자 값으로 매핑합니다
- Qt.enumValueToString: 값을 해당 값을 가지는 키의 이름으로 매핑합니다
- Qt.enumValueToStrings: 값을 해당 값을 가지는 키 이름들의 목록으로 매핑합니다
예:
// 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)
}관련 항목: QML 값 유형, 열거형 속성, 열거형 유형, QtQml::Qt::enumStringToValue, QtQml::Qt::enumValueToString, 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.