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