Binding QML Type

속성 바인딩을 임의로 생성할 수 있습니다. 자세히...

Import Statement: import QtQml

속성

자세한 설명

QML에서 속성 바인딩은 서로 다른 객체의 속성 간에 종속성을 초래합니다.

접근 불가능한 프로퍼티에 바인딩하기

C++에서 QML로 내보낸 클래스의 속성처럼 QML에서 직접 인스턴스화되지 않은 다른 객체의 속성에 객체의 속성을 바인딩해야 하는 경우가 있습니다. 바인딩 유형을 사용하여 이러한 종속성을 설정할 수 있으며, 어떤 값을 어떤 객체의 프로퍼티에 바인딩할 수 있습니다.

예를 들어, "app.enteredText" 속성을 QML에 매핑하는 C++ 애플리케이션에서 Binding을 사용하여 enteredText 속성을 업데이트할 수 있습니다.

TextEdit { id: myTextField; text: "Please type here..." }
Binding { app.enteredText: myTextField.text }

text 이 변경되면 C++ 속성 enteredText 이 자동으로 업데이트됩니다.

조건부 바인딩

특정 조건이 충족되면 속성 값을 수정하고 그렇지 않으면 수정하지 않은 채로 두어야 하는 경우가 있습니다. 모든 가능한 분기에 대한 값을 제공해야 하므로 직접 바인딩으로는 이 작업을 수행할 수 없는 경우가 많습니다.

예를 들어 아래 코드 스니펫은 마우스를 놓을 때마다 경고를 표시합니다. 이는 마우스를 누르지 않을 때 바인딩 값이 정의되지 않았기 때문입니다.

// produces warning: "Unable to assign [undefined] to double value"
value: if (mouse.pressed) mouse.mouseX

바인딩 유형을 사용하면 이 경고를 방지할 수 있습니다.

Binding on value {
    when: mouse.pressed
    value: mouse.mouseX
}

바인딩 유형은 프로퍼티에 이전에 설정된 모든 직접 바인딩을 복원합니다.

또한 Qt Qml.

속성 문서

delayed : bool

이 속성은 바인딩을 지연시킬지 여부를 보유합니다.

지연된 바인딩은 대상을 즉시 업데이트하지 않고 이벤트 큐가 지워질 때까지 기다립니다. 이는 최적화를 위해 또는 중간 값이 할당되지 않도록 하기 위해 사용할 수 있습니다.

Binding {
    contactName.text.value: givenName + " " + familyName
    when: list.ListView.isCurrentItem
    delayed: true
}

참고: 지연된 속성을 사용하면 바인딩 요소가 값에 대한 프록시를 생성해야 하므로 실제 대상에 대한 적용을 지연시킬 수 있으므로 런타임 비용이 발생합니다. targetproperty 속성을 사용하는 경우 value 속성을 프록시로 재사용할 수 있으므로 이 비용이 더 낮습니다. 위에 표시된 양식을 사용하는 경우 바인딩은 프록시 값을 보유하기 위해 동적 메타 객체가 있는 별도의 객체를 할당합니다.


property : string

업데이트할 프로퍼티입니다.

표현식으로 인해 값 유형의 프로퍼티에 액세스하는 경우 그룹 프로퍼티가 될 수 있습니다. 예를 들어

Item {
    id: item

    property rect rectangle: Qt.rect(0, 0, 200, 200)
}

Binding {
    target: item
    property: "rectangle.x"
    value: 100
}

바인딩 대상을 선언적으로 제공할 수 없는 경우에만 이 속성을 사용해야 합니다. 다음 코드 조각은 위의 바인딩과 동일하지만 더 간결합니다:

Binding { item.rectangle.x: 100 }

restoreMode : enumeration

이 속성은 바인딩이 비활성화되었을 때 원래 값을 복원해야 하는지 여부와 복원 방법을 설명하는 데 사용할 수 있습니다.

가능한 값은 다음과 같습니다:

Constant설명
Binding.RestoreNone원래 값이 전혀 복원되지 않습니다.
Binding.RestoreBinding원래 값이 다른 바인딩인 경우 원래 값이 복원됩니다. 이 경우 이전 바인딩이 다시 적용됩니다.
Binding.RestoreValue바인딩이 아닌 일반 값인 경우 원래 값이 복원됩니다.
Binding.RestoreBindingOrValue원래 값은 항상 복원됩니다.

기본값은 Binding.RestoreBindingOrValue 입니다.

참고: 이 속성은 이전 버전의 Qt와의 하위 호환성을 위해 존재합니다. 새 코드에서는 사용하지 마세요.


target : QtObject

업데이트할 객체. 바인딩 대상에 id 속성이 없는 경우(예: 대상이 싱글톤인 경우) 이 속성을 사용해야 합니다. 그렇지 않으면 다음 두 코드가 동일합니다:

Binding { contactName.text: name }
Binding {
    target: contactName
    property: "text"
    value: name
}

전자는 훨씬 더 간결하지만 런타임에 대상 개체나 속성을 바꿀 수 없습니다. 후자를 사용하면 가능합니다.


value : var

대상 객체 및 프로퍼티에 설정할 값입니다. 상수(그다지 유용하지 않음) 또는 바인딩된 표현식일 수 있습니다.

바인딩 대상을 선언적으로 제공할 수 없는 경우에만 이 속성을 사용해야 합니다. 그렇지 않으면 대상에 직접 바인딩할 수 있습니다.


when : bool

이 속성은 바인딩이 활성화되어 있을 때 유지됩니다. 바인딩을 활성화하려면 바인딩이 활성화될 때 true로 평가되는 표현식으로 설정해야 합니다.

Binding {
    contactName.text: name
    when: list.ListView.isCurrentItem
}

기본적으로 바인딩이 비활성 상태가 되면 눈에 띄지 않게 설정된 모든 바인딩 또는 값이 복원됩니다. restoreMode 속성을 사용하여 복원 동작을 사용자 지정할 수 있습니다.

restoreMode참조하세요 .


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