QML 값 유형

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

값 유형은 int 또는 string 과 같이 참조가 아닌 값으로 개념적으로 전달되는 유형입니다. 이는 QML 객체 유형과 대조됩니다. 객체 유형은 참조로 전달됩니다. 객체 유형의 인스턴스를 두 개의 다른 프로퍼티에 할당하는 경우 두 프로퍼티 모두 동일한 값을 갖습니다. 객체를 수정하면 두 속성 모두에 반영됩니다. 값 유형의 인스턴스를 두 개의 다른 프로퍼티에 할당하는 경우 프로퍼티는 별도의 값을 갖습니다. 둘 중 하나를 수정해도 다른 하나는 동일하게 유지됩니다. 값 유형은 자바스크립트 객체처럼 상호 작용할 수 있어야 하므로 개념적으로만 값으로 전달됩니다. 이를 용이하게 하기 위해 실제로는 JavaScript 코드에서 값 유형 에 액세스할 때 값 유형 참조로 전달됩니다.

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

값 타입은 참조하는 데 사용할 수 있습니다:

  • 단일 값(예: int 은 단일 숫자 참조)
  • 속성 및 메서드가 포함된 값(예: sizewidthheight 속성이 있는 값을 참조합니다.)
  • 일반 유형 var. 다른 유형의 값을 보유할 수 있지만 그 자체가 값 유형입니다.

변수나 속성이 값 유형을 보유하고 있고 다른 변수나 속성에 할당되면 값의 복사본이 만들어집니다.

사용 가능한 값 유형

일부 값 유형은 기본적으로 엔진에서 지원되며 사용하는 데 임포트 문이 필요하지 않은 반면, 다른 값 유형은 클라이언트가 해당 값 유형을 제공하는 모듈을 임포트해야 합니다. 아래 나열된 모든 값 유형은 다음과 같은 예외를 제외하고 QML 문서에서 property 유형으로 사용할 수 있습니다:

  • void값이 없음을 나타내는 값인
  • list 는 객체 또는 값 유형과 함께 요소로 사용해야 합니다.
  • enumeration 는 등록된 QML 객체 유형으로 열거형을 정의해야 하므로 직접 사용할 수 없습니다.

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

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

bool

이진 참/거짓 값

date

날짜 값

double

소수점이 있는 숫자, 배정밀도로 저장됨

enumeration

명명된 열거형 값

int

전체 숫자(예: 0, 10 또는 -20)

list

QML 개체 목록

real

소수점이 있는 숫자

string

자유 형식 텍스트 문자열

url

리소스 로케이터

var

일반 속성 유형

variant

일반 속성 유형

void

빈 값 유형

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

QML 모듈은 더 많은 값 유형으로 QML 언어를 확장할 수 있습니다.

예를 들어 QtQml 모듈에서 제공하는 값 유형은 다음과 같습니다:

point

x 및 y 속성이 있는 값

rect

x, y, 너비 및 높이 속성이 있는 값

size

너비 및 높이 속성이 있는 값

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

color

ARGB 색상 값

font

QFont 속성을 가진 글꼴 값. 글꼴 유형은 QFont 속성을 가진 글꼴 값을 나타냅니다.

matrix4x4

matrix4x4 유형은 4행, 4열 행렬입니다.

quaternion

쿼터니언 유형에는 스칼라, x, y 및 z 속성이 있습니다.

vector2d

벡터2d 유형에는 x 및 y 속성이 있습니다.

vector3d

x, y, z 속성을 가진 값

vector4d

벡터4d 타입에는 x, y, z 및 w 속성이 있습니다.

Qt 글로벌 객체는 값 유형의 값을 조작하기 위해 useful functions 을 제공합니다. Qt QmlQt Quick 모듈의 값을 조작합니다.

다른 Qt 모듈은 해당 모듈 페이지에 값 유형을 문서화합니다.

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

값 유형의 속성 변경 동작

예를 들어 font 유형에는 pixelSize, familybold 프로퍼티가 있는 것처럼 일부 값 유형에는 프로퍼티가 있습니다. 객체 유형의 프로퍼티와 달리 값 유형의 프로퍼티는 자체적인 프로퍼티 변경 신호를 제공하지 않습니다. 값 유형 속성 자체에 대한 속성 변경 신호 핸들러만 만들 수 있습니다:

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 타입 시스템도참조하세요 .

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