Spec-Zone.ru › Qt 6.1

Класс QBindable

шаблон <typename T> класс QBindable

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

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

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

QPropertyBinding<T> makeBinding(const QPropertyBindingSourceLocation &location = QT_PROPERTY_DEFAULT_BINDING_LOCATION)
QPropertyBinding<T> setBinding(const QPropertyBinding<T> &binding)
QPropertyBinding<T> setBinding(Functor f)
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, шаблон, <typename, T>, QProperty<T> и QObjectBindableProperty.

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

QPropertyBinding<T> QBindable::makeBinding(const QPropertyBindingSourceLocation &location = QT_PROPERTY_DEFAULT_BINDING_LOCATION)

Создаёт привязку, вычисляющую значение базового свойства.

QPropertyBinding<T> QBindable::setBinding(const QPropertyBinding<T> &binding)

Устанавливает привязку базового свойства в binding. Ничего не делает, если QBindable является только для чтения или недействителен.

См. также привязку, QPropertyBinding<T>::isValid(), isReadOnly() и isValid().

шаблон <typename Functor> QPropertyBinding<T> QBindable::setBinding(Functor f)

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

Создаёт QPropertyBinding<T> из f и устанавливает её в качестве привязки базового свойства.

QPropertyBinding<T> QBindable::takeBinding()

Удаляет текущую установленную привязку базового свойства и возвращает её. Если у свойства нет привязки, возвращаемая QPropertyBinding<T> будет недействительной.

См. также setBinding, getBinding, QPropertyBinding<T>::isValid() и hasBinding.

T QBindable::value() const

Возвращает текущее значение базового свойства. Если QBindable недействителен, возвращается значение по умолчанию T.

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

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

Spec-Zone.ru

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