Spec-Zone.ru › Qt 6.1

Класс QObjectBindableProperty

шаблон <typename Class, typename T, auto Offset, auto Signal> класс QObjectBindableProperty

Класс QObjectBindableProperty — это шаблонный класс, который позволяет автоматически связывать свойства для данных свойств, хранящихся в классах, производных от QObject. Подробнее...

Заголовок: #include <QObjectBindableProperty>
CMake: find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
С момента: Qt 6.0
Наследует: QPropertyData
  • Список всех членов, включая унаследованные

Открытые функции

QObjectBindableProperty(Class *owner, QPropertyBinding<T> &&binding)
QObjectBindableProperty(Class *owner, const QPropertyBinding<T> &binding)
QObjectBindableProperty(Functor &&f)
QObjectBindableProperty(T &&initialValue)
QObjectBindableProperty(const T &initialValue)
QObjectBindableProperty()
~QObjectBindableProperty()
QPropertyBinding<T> binding() const
bool hasBinding() const
QPropertyChangeHandler<Functor> onValueChanged(Functor f)
QPropertyBinding<T> setBinding(const QPropertyBinding<T> &newBinding)
bool setBinding(const QUntypedPropertyBinding &newBinding)
QPropertyBinding<T> setBinding(Functor f)
void setValue(QObjectBindableProperty::parameter_type newValue)
void setValue(QObjectBindableProperty::rvalue_ref newValue)
QPropertyChangeHandler<Functor> subscribe(Functor f)
QPropertyBinding<T> takeBinding()
QObjectBindableProperty::parameter_type value() const

Макросы

Q_OBJECT_BINDABLE_PROPERTY(containingClass, type, name, signal)
Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(containingClass, type, name, initialvalue, signal)

Подробное описание

QObjectBindableProperty — это обобщенный контейнер, который содержит экземпляр T и ведет себя в основном как QProperty. Это один из классов, реализующих Qt Связанные свойства. Дополнительные шаблонные параметры используются для идентификации окружающего класса и члена функции этого класса. Член функции будет вызываться всякий раз, когда изменяется значение, хранящееся в свойстве.

Вы можете использовать QObjectBindableProperty для добавления поддержки связывания в код, использующий Q_PROPERTY. Методы получения и установки легко адаптировать для доступа к QObjectBindableProperty, а не к простому значению. Для вызова сигнала изменения при изменении свойства используйте QObjectBindableProperty и передайте сигнал изменения в качестве обратного вызова.

Класс QObjectBindableProperty обычно не используется напрямую, вместо этого его экземпляр создается с помощью макроса Q_OBJECT_BINDABLE_PROPERTY.

Используйте макрос Q_OBJECT_BINDABLE_PROPERTY в объявлении класса, чтобы объявить свойство как связуемое.

class MyClass : public QObject
{
    Q_OBJECT
    Q_PROPERTY(int x READ x WRITE setX NOTIFY xChanged BINDABLE bindableX)
public:
    int x() const { return xProp; }
    void setX(int x) { xProp = x; }
    QBindable<int> bindableX() { return QBindable<int>(&xProp); }

signals:
    void xChanged();

private:
    // Declare the instance of the bindable property data.
    Q_OBJECT_BINDABLE_PROPERTY(MyClass, int, xProp, &MyClass::xChanged)
};

Если вам нужно инициализировать свойство непосредственно каким-либо значением, отличным от значения по умолчанию, вы можете использовать макрос Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS. Он принимает значение для инициализации в качестве одного из параметров.

class MyClass : public QObject
{
    Q_OBJECT
    Q_PROPERTY(int x READ x WRITE setX NOTIFY xChanged BINDABLE bindableX)
public:
    int x() const { return xProp; }
    void setX(int x) { xProp = x; }
    QBindable<int> bindableX() { return QBindable<int>(&xProp); }

signals:
    void xChanged();

private:
    // Declare the instance of int bindable property data and
    // initialize it with the value 5.
    // This is similar to declaring
    // int xProp = 5;
    // without using the new QObjectBindableProperty class.
    Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(MyClass, int, xProp, 5, &MyClass::xChanged)
};

Макрос Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS не поддерживает напрямую несколько аргументов. Если ваше свойство требует нескольких аргументов для инициализации, пожалуйста, явно вызовите соответствующий конструктор.

class CustomType
{
public:
    CustomType(int val, int otherVal) : value(val), anotherValue(otherVal) { }

private:
    int value = 0;
    int anotherValue = 0;
};

// later when using CustomType as a property
Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(MyClass, CustomType xProp, CustomType(5, 10),
                                     &MyClass::xChanged)

Если свойству не нужно уведомление об изменении, вы можете опустить "NOFITY xChanged" в макросе Q_PROPERTY, а также последний аргумент макросов Q_OBJECT_BINDABLE_PROPERTY и Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS.

Документация по членам-функциям

void QObjectBindableProperty::setValue(QObjectBindableProperty::parameter_type newValue)

void QObjectBindableProperty::setValue(QObjectBindableProperty::rvalue_ref newValue)

Присваивает newValue этому свойству и удаляет связанное с свойством связывание, если оно существует. Если значение свойства изменяется в результате, вызывает функцию обратного вызова на owner.

[default] QObjectBindableProperty::QObjectBindableProperty(Class *owner, QPropertyBinding<T> &&binding)

Конструктор свойства, привязанного к предоставленному выражению binding. В первый раз при чтении значения свойства выражение binding вычисляется. Всякий раз, когда изменяется зависимость от связывания, связывание будет перевычисляться в следующий раз при чтении значения этого свойства. При изменении значения свойства owner уведомляется через функцию обратного вызова.

[default] QObjectBindableProperty::QObjectBindableProperty(Class *owner, const QPropertyBinding<T> &binding)

Конструктор свойства, привязанного к предоставленному выражению binding. В первый раз при чтении значения свойства выражение binding вычисляется. Всякий раз, когда изменяется зависимость от связывания, связывание будет перевычисляться в следующий раз при чтении значения этого свойства. При изменении значения свойства owner уведомляется через функцию обратного вызова.

шаблон <typename Functor> QObjectBindableProperty::QObjectBindableProperty(Functor &&f)

Конструктор свойства, привязанного к предоставленному выражению связывания f. В первый раз при чтении значения свойства выражение связывания вычисляется. Всякий раз, когда изменяется зависимость от связывания, связывание будет перевычисляться в следующий раз при чтении значения этого свойства.

QObjectBindableProperty::QObjectBindableProperty(T &&initialValue)

Перемещающий конструктор свойства со значением initialValue.

QObjectBindableProperty::QObjectBindableProperty(const T &initialValue)

Конструктор свойства со значением initialValue.

QObjectBindableProperty::QObjectBindableProperty()

Конструктор свойства со значением по умолчанию для типа T.

[default] QObjectBindableProperty::~QObjectBindableProperty()

Деструктор свойства.

QPropertyBinding<T> QObjectBindableProperty::binding() const

Возвращает выражение привязки, связанное с этим свойством. Если такая ассоциация отсутствует, будет возвращена QPropertyBinding<T>, сконструированная по умолчанию.

См. также setBinding().

bool QObjectBindableProperty::hasBinding() const

Возвращает true, если свойство связано с привязкой; иначе — false.

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

Регистрирует заданный функциональный объект f в качестве обратного вызова, который будет вызываться всякий раз, когда значение свойства изменяется.

Обратный вызов f должен быть типом с обычным оператором вызова () без параметров. Это означает, что вы можете предоставить выражение лямбда C++, std::function или даже пользовательскую структуру с оператором вызова.

Возвращаемый объект обработчика изменений свойства отслеживает регистрацию. При выходе из области видимости объект обработчика аннулирует регистрацию обратного вызова.

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

Связывает значение этого свойства с предоставленным выражением newBinding и возвращает ранее связанную привязку. При первом чтении значения свойства выражение привязки вычисляется. Всякий раз, когда изменяется зависимость привязки, привязка будет перевычислена в следующий раз, когда будет читаться значение этого свойства. При изменении значения свойства владелец уведомляется с помощью функции обратного вызова.

См. также binding().

bool QObjectBindableProperty::setBinding(const QUntypedPropertyBinding &newBinding)

Это перегруженная функция.

Связывает значение этого свойства с предоставленным выражением newBinding. При первом чтении значения свойства выражение привязки вычисляется. Всякий раз, когда изменяется зависимость привязки, привязка будет перевычислена в следующий раз, когда будет читаться значение этого свойства.

Возвращает true , если тип этого свойства совпадает с типом, возвращаемым функцией привязки; false в противном случае.

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

Это перегруженная функция.

Связывает значение этого свойства с предоставленным функциональным объектом f и возвращает ранее связанную привязку. При первом чтении значения свойства выражение привязки вычисляется, вызвав оператор вызова () для f. Всякий раз, когда изменяется зависимость привязки, привязка будет перевычислена в следующий раз, когда будет читаться значение этого свойства. При изменении значения свойства владелец уведомляется с помощью функции обратного вызова.

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

Подписывает заданный функциональный объект f в качестве обратного вызова, который вызывается немедленно и каждый раз, когда значение свойства изменяется в будущем.

Обратный вызов f должен быть типом с обычным оператором вызова () без параметров. Это означает, что вы можете предоставить выражение лямбда C++, std::function или даже пользовательскую структуру с оператором вызова.

Возвращаемый объект обработчика изменений свойства отслеживает подписку. При выходе из области видимости объект обработчика отписывает обратный вызов.

QPropertyBinding<T> QObjectBindableProperty::takeBinding()

Отсоединяет выражение привязки от этого свойства и возвращает его. После вызова этой функции значение свойства будет изменяться только в том случае, если вы присвоите ему новое значение или установите новую привязку.

QObjectBindableProperty::parameter_type QObjectBindableProperty::value() const

Возвращает значение свойства. Это может вычислить выражение привязки, связанное с этим свойством, прежде чем вернуть значение.

См. также setValue().

Документация макросов

[since 6.0] Q_OBJECT_BINDABLE_PROPERTY(containingClass, type, name, signal)

Объявляет QObjectBindableProperty внутри containingClass типа type с именем name. Если задан необязательный аргумент signal, этот сигнал будет выпущен, когда свойство будет помечено как изменённое.

Эта функция была введена в Qt 6.0.

См. также Систему свойств Qt и Связанные свойства Qt.

[since 6.0] Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(containingClass, type, name, initialvalue, signal)

Объявляет QObjectBindableProperty внутри containingClass типа type с именем name, инициализированное значением initialvalue. Если задан необязательный аргумент signal, этот сигнал будет выпущен, когда свойство будет помечено как изменённое.

Эта функция была введена в Qt 6.0.

См. также Систему свойств Qt и Связанные свойства Qt.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qobjectbindableproperty.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API