Класс QBindable
шаблон <typename T> класс QBindableQBindable — это класс-обёртка вокруг свойств с поддержкой привязки. Он позволяет выполнять безопасные операции с типами, абстрагируя различия между различными классами свойств. Подробнее...
| Заголовок: | #include <QBindable> |
| CMake: | find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| Наследует: | QUntypedBindable |
Открытые функции
| QPropertyBinding<T> | binding() const |
| QPropertyBinding<T> | makeBinding(const QPropertyBindingSourceLocation &location = QT_PROPERTY_DEFAULT_BINDING_LOCATION) const |
| QPropertyBinding<T> | setBinding(const QPropertyBinding<T> &binding) |
| QPropertyBinding<T> | setBinding(Functor f) |
| void | setValue(const T &value) |
| QPropertyBinding<T> | takeBinding() |
| T | value() const |
Подробное описание
QBindable<T> помогает интегрировать традиционные свойства Qt с Q_PROPERTY с поддержкой привязки. Если свойство поддерживается QProperty, QObjectBindableProperty или QObjectComputedProperty, вы можете добавить BINDABLE bindablePropertyName в объявление Q_PROPERTY, где bindablePropertyName — функция, возвращающая экземпляр QBindable, созданный из QProperty. Возвращаемый QBindable позволяет пользователям свойства устанавливать и запрашивать привязки свойства без необходимости знать точный тип свойства с поддержкой привязки.
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)
};
MyClass *myObject;
QBindable<int> bindableX = myObject->bindableX();
qDebug() << bindableX.hasBinding(); // prints false
QProperty<int> y {42};
bindableX.setBinding([&](){ return 2*y.value(); });
qDebug() << bindableX.hasBinding() << myObject->x(); // prints true 84 См. также QMetaProperty::isBindable, QProperty, QObjectBindableProperty, QObjectComputedProperty и Свойства Qt с поддержкой привязки.
Документация по функциям-членам
QPropertyBinding<T> QBindable::binding() const
Возвращает текущую установленную привязку к базовому свойству. Если у свойства нет привязки, возвращённая QPropertyBinding<T> будет недействительной.
См. также setBinding и hasBinding.
QPropertyBinding<T> QBindable::makeBinding(const QPropertyBindingSourceLocation &location = QT_PROPERTY_DEFAULT_BINDING_LOCATION) const
Создаёт привязку, оценивающую значение базового свойства, используя указанное расположение источника location.
QPropertyBinding<T> QBindable::setBinding(const QPropertyBinding<T> &binding)
Устанавливает привязку базового свойства на binding. Не делает ничего, если QBindable является только для чтения или недействительным.
См. также binding, isReadOnly() и isValid().
шаблон <typename Functor> QPropertyBinding<T> QBindable::setBinding(Functor f)
Это перегруженная функция.
Создаёт QPropertyBinding<T> из f и устанавливает её в качестве привязки базового свойства.
void QBindable::setValue(const T &value)
Устанавливает значение базового свойства на value. Это удаляет любую текущую установленную привязку. Эта функция не имеет эффекта, если QBindable является только для чтения или недействительным.
См. также value(), isValid(), isReadOnly() и setBinding().
QPropertyBinding<T> QBindable::takeBinding()
Удаляет текущую установленную привязку базового свойства и возвращает её. Если у свойства нет привязки, возвращённая QPropertyBinding<T> будет недействительной.
См. также binding, setBinding и hasBinding.
T QBindable::value() const
Возвращает текущее значение базового свойства. Если QBindable недействителен, возвращается значение по умолчанию T.
См. также setValue() и isValid().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qbindable.html