Класс QObjectBindableProperty
шаблон <typename Class, typename T, auto Offset, auto Signal> class 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 |
Подробное описание
QObjectBindableProperty — это универсальный контейнер, который хранит экземпляр T и ведет себя в основном как QProperty. Дополнительные шаблонные параметры используются для идентификации окружающего класса и члена функции этого класса. Член функции будет вызываться всякий раз, когда изменяется значение, хранящееся в свойстве.
Вы можете использовать QObjectBindableProperty для добавления поддержки связывания к коду, использующему Q_PROPERTY. Методы получения и задания легко адаптировать для доступа к QObjectBindableProperty вместо простого значения. Для вызова сигнала изменения при изменении свойства используйте QObjectBindableProperty и передайте сигнал изменения в качестве обратного вызова.
QObjectBindableProperty обычно не используется напрямую, вместо этого его экземпляр создается с помощью макроса Q_BINDABLE_PROPERTY_DATA.
Используйте макрос Q_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; }
Bindable<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)
}; Если свойство не требует уведомления об изменении, можно опустить «NOFITY xChanged» в макросе Q_PROPERTY, а также последний аргумент макроса Q_OBJECT_BINDABLE_PROPERTY.
Документация по функциям-членам
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 вычисляется. Всякий раз, когда изменяется зависимость выражения binding, оно будет повторно вычисляться в следующий раз, когда будет считываться значение этого свойства. При изменении значения свойства owner уведомляется с помощью функции обратного вызова.
[default] QObjectBindableProperty::QObjectBindableProperty(Class *owner, const QPropertyBinding<T> &binding)
Конструирует свойство, связанное с заданным выражением binding. В первый раз при чтении значения свойства выражение binding вычисляется. Всякий раз, когда изменяется зависимость выражения binding, оно будет повторно вычисляться в следующий раз, когда будет считываться значение этого свойства. При изменении значения свойства owner уведомляется с помощью функции обратного вызова.
шаблон <typename Functor> QObjectBindableProperty::QObjectBindableProperty(Functor &&f)
Конструирует свойство, связанное с заданным выражением привязки f. В первый раз при чтении значения свойства выражение binding вычисляется. Всякий раз, когда изменяется зависимость выражения binding, оно будет повторно вычисляться в следующий раз, когда будет считываться значение этого свойства.
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.
шаблон <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().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qobjectbindableproperty.html