Spec-Zone.ru › Qt

Класс 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> 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

Spec-Zone.ru

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