이 페이지에서

QML 값 유형

QML은 내장 및 사용자 정의 값 유형을 지원합니다.

값 유형은 개념적으로 참조가 아닌 값으로 전달되는 유형으로, 예를 들어 ` int `이나 ` string` 등이 있습니다. 이는 QML 객체 유형과는 대조적입니다. 객체 유형은 참조로 전달됩니다. 객체 유형의 인스턴스를 두 개의 서로 다른 속성에 할당하면, 두 속성 모두 동일한 값을 갖게 됩니다. 객체를 수정하면 두 속성 모두에 그 변경 사항이 반영됩니다. 값 유형의 인스턴스를 두 개의 서로 다른 속성에 할당하면, 두 속성은 서로 다른 값을 갖게 됩니다. 그중 하나를 수정해도 다른 하나는 그대로 유지됩니다. 값 유형은 마치 자바스크립트 객체인 것처럼 상호작용할 수 있어야 하므로, 개념적으로만 값으로 전달됩니다. 이를 용이하게 하기 위해, 실제로는 자바스크립트 코드에서 액세스할 때 값 유형 참조(Value Type References )로 전달됩니다.

객체 유형과 달리, 값 유형은 QML 객체를 선언하는 데 사용할 수 없습니다. 예를 들어, ` int{} ` 객체나 ` size{} ` 객체를 선언하는 것은 불가능합니다.

값 유형은 다음을 참조하는 데 사용할 수 있습니다:

  • 단일 값 (예: ` int `는 단일 숫자를 가리킵니다)
  • 속성과 메서드를 포함하는 값 (예: ` size `는 ` width ` 및 ` height ` 속성을 가진 값을 가리킴)
  • 제네릭 유형 var. 이 유형은 다른 모든 유형의 값을 담을 수 있지만, 그 자체는 값 유형입니다.

변수나 속성이 값형을 포함하고 있으며, 이를 다른 변수나 속성에 할당할 경우, 해당 값의 복사본이 생성됩니다.

사용 가능한 값 유형

일부 값 유형은 엔진에서 기본적으로 지원되므로 사용하기 위해 import 문이 필요하지 않은 반면, 다른 유형의 경우 클라이언트가 해당 유형을 제공하는 모듈을 가져와야 합니다. 아래에 나열된 모든 값 유형은 QML 문서에서 property 유형으로 사용할 수 있으며, 다음 예외 사항이 적용됩니다:

  • void, 이는 값이 없음을 나타냅니다
  • list element로 사용될 때는 객체나 값 유형과 함께 사용해야 합니다

QML 언어에서 제공하는 내장 값 유형

QML 언어에서 기본적으로 지원하는 내장 값 유형은 다음과 같습니다:

bool

이진 true/false 값

date

날짜 값

double

소수점이 있는 숫자(이중 정밀도로 저장됨)

int

정수(예: 0, 10, -20)

list

QML 객체 목록

real

소수점이 있는 숫자

string

자유 형식 텍스트 문자열

url

리소스 로케이터

var

일반 속성 유형

variant

일반 속성 유형

void

빈 값 유형

QML 모듈에서 제공하는 값 유형

QML 모듈은 더 많은 값 유형을 추가하여 QML 언어를 확장할 수 있습니다.

예를 들어, QtQml 모듈이 제공하는 값 유형은 다음과 같습니다.

easingCurve

이징 곡선을 나타내는 값

point

x 및 y 속성을 가진 값

qmlProperty

객체의 속성을 참조하는 값

rect

x, y, width 및 height 속성을 가진 값

size

width 및 height 속성을 가진 값

QtQuick 모듈에서 제공하는 값 유형은 다음과 같습니다:

color

ARGB 색상 값

font

QFont의 속성을 가진 글꼴 값. 글꼴 유형은 QFont의 속성을 가진 글꼴 값을 의미합니다

matrix4x4

matrix4x4 유형은 4행 4열의 행렬입니다

quaternion

쿼터니언(quaternion) 유형은 스칼라, x, y, z 속성을 가집니다

vector2d

vector2d 유형은 x 및 y 속성을 가집니다

vector3d

x, y, z 속성을 가진 값

vector4d

vector4d 유형은 x, y, z 및 w 속성을 가집니다

Qt 전역 객체는 다음 값 유형의 값을 조작하기 위한 useful functions 를 제공합니다. Qt Qml 및 Qt Quick 모듈의 값형 값을 조작하기 위한 xml-ph-0001@deepl.internal를 제공합니다.

다른 Qt 모듈의 값 유형에 대해서는 각 모듈 페이지에 설명되어 있습니다.

'C++에서 QML 유형 정의'에 설명된 대로 사용자 정의 값 유형을 정의할 수 있습니다. 특정 QML 모듈에서 제공하는 유형을 사용하려면 클라이언트가 QML 문서에서 해당 모듈을 임포트해야 합니다.

값 유형의 속성 변경 동작

일부 값 유형에는 속성이 있습니다. 예를 들어, ` font ` 유형에는 ` pixelSize`, ` family ` 및 ` bold ` 속성이 있습니다. 객체 유형의 속성과는 달리, 값 유형의 속성은 자체적인 속성 변경 신호를 제공하지 않습니다. 값 유형 속성 자체에 대해서만 속성 변경 신호 핸들러를 생성할 수 있습니다:

Text {
    // invalid!
    onFont.pixelSizeChanged: doSomething()

    // also invalid!
    font {
        onPixelSizeChanged: doSomething()
    }

    // but this is ok
    onFontChanged: doSomething()
}

그러나 값 유형의 속성 변경 신호는 속성 자체가 변경될 때뿐만 아니라, 해당 속성의 어떤 속성이라도 변경될 때마다 발생한다는 점에 유의해야 합니다. 예를 들어 다음 코드를 살펴보겠습니다:

Text {
    onFontChanged: console.log("font changed")

    Text { id: otherText }

    focus: true

    // changing any of the font attributes, or reassigning the property
    // to a different font value, will invoke the onFontChanged handler
    Keys.onDigit1Pressed: font.pixelSize += 1
    Keys.onDigit2Pressed: font.b = !font.b
    Keys.onDigit3Pressed: font = otherText.font
}

반면, 객체 유형의 속성은 자체적인 속성 변경 신호를 발생시키며, 객체 유형 속성에 대한 속성 변경 신호 핸들러는 해당 속성이 다른 객체 값으로 재할당될 때만 호출됩니다.

‘QML 유형 시스템’ 항목도 참조하십시오 .

© 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.