QProperty Class

template <typename T> class QProperty

QProperty 클래스는 자동 속성 바인딩을 가능하게 하는 템플릿 클래스입니다. 더 보기...

Header: #include <QProperty>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
이후: Qt 6.0
상속합니다: QPropertyData

공용 함수

QProperty()
QProperty(Functor &&f)
QProperty(T &&initialValue)
QProperty(const QPropertyBinding<T> &binding)
QProperty(const T &initialValue)
~QProperty()
QPropertyNotifier addNotifier(Functor f)
QPropertyBinding<T> binding() const
QPropertyChangeHandler<Functor> onValueChanged(Functor f)
QPropertyBinding<T> setBinding(const QPropertyBinding<T> &newBinding)
QPropertyBinding<T> setBinding(Functor f)
bool setBinding(const QUntypedPropertyBinding &newBinding)
void setValue(QProperty<T>::parameter_type newValue)
void setValue(QProperty<T>::rvalue_ref newValue)
QPropertyChangeHandler<Functor> subscribe(Functor f)
QPropertyBinding<T> takeBinding()
QProperty<T>::parameter_type value() const
QProperty<T> &operator=(QProperty<T>::parameter_type newValue)
QProperty<T> &operator=(QProperty<T>::rvalue_ref newValue)
(since 6.2) void beginPropertyUpdateGroup()
(since 6.2) void endPropertyUpdateGroup()

상세 설명

QProperty<T>는 Qt 바인더블 프로퍼티를 구현하는 클래스 중 하나입니다. T의 인스턴스를 담는 컨테이너로, 값을 할당할 수 있으며 value() 함수나 T 변환 연산자를 통해 값을 읽을 수 있습니다. 프로퍼티를 값을 동적으로 계산하는 표현식인 바인딩 표현식에 연결할 수도 있습니다. 이는 C++ 람다로 표현되며 애플리케이션에서 서로 다른 속성 간의 관계를 표현하는 데 사용할 수 있습니다.

참고: QML의 경우 Q_PROPERTY 에서 QProperty 을 BINDABLE 키워드로 노출하는 것이 중요합니다. 그 결과 QML 엔진은 이를 바인더블 인터페이스로 사용하여 속성 바인딩을 설정합니다. 그런 다음 바인딩은 일반 API를 통해 C++와 상호 작용할 수 있습니다: QProperty<T>::onValueChanged, QProperty::takeBinding 및 QBindable::hasBinding 프로퍼티가 BINDABLE인 경우 엔진은 C++ 프로퍼티 시스템에 내재된 변경 추적 기능을 사용하여 변경에 대한 알림을 받고, 신호가 방출되는 것에 의존하지 않습니다.

멤버 함수 문서

void QProperty::setValue(QProperty<T>::parameter_type newValue)

void QProperty::setValue(QProperty<T>::rvalue_ref newValue)

이 속성에 newValue 을 할당하고 속성의 관련 바인딩(있는 경우)을 제거합니다.

QProperty<T> &QProperty::operator=(QProperty<T>::parameter_type newValue)

QProperty<T> &QProperty::operator=(QProperty<T>::rvalue_ref newValue)

이 프로퍼티에 newValue 을 할당하고 QProperty 에 대한 참조를 반환합니다.

QProperty::QProperty()

기본적으로 구성된 T의 인스턴스로 프로퍼티를 생성합니다.

[explicit] template <typename Functor> QProperty::QProperty(Functor &&f)

제공된 바인딩 표현식 f 에 연결된 프로퍼티를 생성합니다. 프로퍼티의 값은 새 바인딩을 평가한 결과로 설정됩니다. 바인딩의 종속성이 변경될 때마다 바인딩이 다시 평가되고 그에 따라 프로퍼티의 값이 업데이트됩니다.

[explicit default] QProperty::QProperty(T &&initialValue)

이동 - 제공된 initialValue 을 사용하여 프로퍼티를 생성합니다.

[explicit] QProperty::QProperty(const QPropertyBinding<T> &binding)

제공된 binding 표현식에 연결된 속성을 생성합니다. 프로퍼티 값은 새 바인딩을 평가한 결과로 설정됩니다. 바인딩의 종속성이 변경될 때마다 바인딩이 다시 평가되고 그에 따라 프로퍼티의 값이 업데이트됩니다.

[explicit default] QProperty::QProperty(const T &initialValue)

제공된 initialValue 을 사용하여 프로퍼티를 생성합니다.

QProperty::~QProperty()

속성을 파괴합니다.

template <typename Functor> QPropertyNotifier QProperty::addNotifier(Functor f)

주어진 함수 f 를 프로퍼티 값이 변경될 때마다 호출되는 콜백으로 구독합니다.

콜백 f 은 매개변수 없이 일반 호출 연산자 () 가 있는 유형으로 예상됩니다. 즉, 호출 연산자가 있는 C++ 람다 표현식, std::함수 또는 사용자 정의 구조체를 제공할 수 있습니다.

반환된 속성 변경 핸들러 객체는 구독을 추적합니다. 범위를 벗어나면 콜백이 구독 취소됩니다.

이 메서드는 경우에 따라 반환되는 객체가 템플릿이 아니므로 onValueChanged()보다 사용하기 쉽습니다. 따라서 클래스의 멤버 등으로 더 쉽게 저장할 수 있습니다.

onValueChanged() 및 subscribe()도 참조하세요 .

QPropertyBinding<T> QProperty::binding() const

이 프로퍼티와 연관된 바인딩 표현식을 반환합니다. 이러한 연결이 존재하지 않으면 기본으로 구성된 QPropertyBinding<T>가 반환됩니다.

setBinding()도 참조하십시오 .

template <typename Functor> QPropertyChangeHandler<Functor> QProperty::onValueChanged(Functor f)

프로퍼티 값이 변경될 때마다 호출될 콜백으로 지정된 함수 f 를 등록합니다. 값이 변경될 때마다 컨텍스트에 따라 핸들러가 즉시 호출되거나 지연됩니다.

콜백 f 은 매개변수 없이 일반 호출 연산자 () 가 있는 유형으로 예상됩니다. 즉, 호출 연산자가 있는 C++ 람다 표현식, std::함수 또는 사용자 정의 구조체를 제공할 수 있습니다.

반환된 속성 변경 핸들러 객체는 등록을 추적합니다. 범위를 벗어나면 콜백은 등록이 취소됩니다.

QPropertyBinding<T> QProperty::setBinding(const QPropertyBinding<T> &newBinding)

이 속성의 값을 제공된 newBinding 표현식에 연결하고 이전에 연결된 바인딩을 반환합니다. 프로퍼티의 값은 새 바인딩을 평가한 결과로 설정됩니다. 바인딩의 종속성이 변경될 때마다 바인딩이 다시 평가되고 그에 따라 속성 값이 업데이트됩니다.

binding()도 참조하세요 .

template <typename Functor> QPropertyBinding<T> QProperty::setBinding(Functor f)

이것은 오버로드된 함수입니다.

이 프로퍼티의 값을 제공된 함수 f 와 연결하고 이전에 연결된 바인딩을 반환합니다. 프로퍼티의 값은 새 바인딩을 평가한 결과로 설정됩니다. 바인딩의 종속성이 변경될 때마다 바인딩이 다시 평가되고 그에 따라 프로퍼티의 값이 업데이트됩니다.

속성 바인딩 공식화도참조하세요 .

bool QProperty::setBinding(const QUntypedPropertyBinding &newBinding)

이것은 오버로드된 함수입니다.

이 속성의 값을 제공된 newBinding 표현식과 연결합니다. 프로퍼티의 값은 새 바인딩을 평가한 결과로 설정됩니다. 바인딩의 종속성이 변경될 때마다 바인딩이 다시 평가되고 그에 따라 프로퍼티의 값이 업데이트됩니다.

이 프로퍼티의 유형이 바인딩 함수가 반환하는 유형과 같으면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

template <typename Functor> QPropertyChangeHandler<Functor> QProperty::subscribe(Functor f)

주어진 함수 f 를 즉시 호출되는 콜백으로 구독하고 향후 속성 값이 변경될 때마다 호출합니다. 값이 변경될 때마다 컨텍스트에 따라 핸들러가 즉시 호출되거나 지연됩니다.

콜백 f 은 복사할 수 있는 유형으로 예상되며 매개변수 없이 일반 호출 연산자()가 있습니다. 즉, 호출 연산자가 있는 C++ 람다 표현식, std::함수 또는 사용자 정의 구조체를 제공할 수 있습니다.

반환된 속성 변경 핸들러 객체는 구독을 추적합니다. 범위를 벗어나면 콜백이 구독 취소됩니다.

QPropertyBinding<T> QProperty::takeBinding()

이 속성에서 바인딩 표현식을 분리하고 반환합니다. 이 함수를 호출한 후 새 값을 할당하거나 새 바인딩이 설정된 경우에만 속성 값이 변경됩니다.

QProperty<T>::parameter_type QProperty::value() const

프로퍼티의 값을 반환합니다. 값을 반환하기 전에 이 속성에 연결된 바인딩 표현식을 평가할 수 있습니다.

setValue()도 참조하세요 .

관련 비회원

[since 6.2] void beginPropertyUpdateGroup()

속성 업데이트 그룹의 시작을 표시합니다. 이 그룹 내에서 속성을 변경해도 종속 속성이 즉시 업데이트되지 않으며 변경 알림이 트리거되지 않습니다. 대신 endPropertyUpdateGroup 으로 호출하여 그룹이 종료될 때까지 변경 알림이 연기됩니다.

그룹은 중첩될 수 있습니다. 이 경우 가장 바깥쪽 그룹이 종료된 후에만 지연이 종료됩니다.

참고: 변경 알림은 그룹에 영향을 받는 모든 속성 값이 새 값으로 업데이트된 후에만 전송됩니다. 이를 통해 여러 프로퍼티를 업데이트해야 하는 경우 클래스 불변성을 다시 설정할 수 있으므로 외부 관찰자가 일관되지 않은 상태를 알아차리지 못하도록 방지할 수 있습니다.

이 함수는 Qt 6.2에 도입되었습니다.

Qt::endPropertyUpdateGroupQScopedPropertyUpdateGroup참조하십시오 .

[since 6.2] void endPropertyUpdateGroup()

속성 업데이트 그룹을 종료합니다. 가장 바깥쪽 그룹이 종료되고 지연된 바인딩 평가 및 알림이 지금 발생하는 경우.

경고: beginPropertyUpdateGroup 에 대한 선행 호출 없이 endPropertyUpdateGroup을 호출하면 정의되지 않은 동작이 발생합니다.

이 함수는 Qt 6.2에 도입되었습니다.

Qt::beginPropertyUpdateGroupQScopedPropertyUpdateGroup참조하세요 .

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