QBindable Class

template <typename T> class QBindable

QBindableは、バインディング可能なプロパティのラッパー・クラスです。様々なプロパティ・クラスの違いを抽象化しながら、型安全な操作を可能にします。詳細...

Header: #include <QBindable>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Inherits: QUntypedBindable

パブリック関数

QBindable(QObject *obj, const QMetaProperty &property)
QBindable(QObject *obj, const char *property)
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 でサポートされている場合、Q_PROPERTY の宣言にBINDABLE bindablePropertyName を追加することができます。bindablePropertyName は、QProperty から構築された QBindable のインスタンスを返す関数です。返された 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 Bindable Propertiesも参照してください

メンバ関数のドキュメント

[explicit] QBindable::QBindable(QObject *obj, const QMetaProperty &property)

QBindable::QBindable(QObject *obj, const char *property)を参照してください。

[explicit] QBindable::QBindable(QObject *obj, const char *property)

objQ_PROPERTY property の QBindable を構築します。このプロパティは、notify シグナルを持たなければなりませんが、Q_PROPERTY の定義にBINDABLE を持つ必要はありません。したがって、バインディングを意識しないQ_PROPERTYでもバインドしたり、バインド式で使用したりすることができます。バインディング式では、プロパティがBINDABLE でない場合に依存性追跡を有効にするために、通常のプロパティREAD 関数(またはMEMBER )の代わりにQBindable::value() を使用する必要があります。ラムダを使用してバインディングする場合、バインディング式でこのコンストラクタを呼び出すコストを避けるために、QBindableを値でキャプチャすることを好むかもしれません。Q_PROPERTY このコンストラクタは、Q_PROPERTY に対してBINDABLE を実装するために使用すべきではありません。QBindable を通さずに直接使用できるプロパティを作成するには、QProperty またはQObjectBindableProperty を使用してください。

QProperty<QString> displayText;
QDateTimeEdit *dateTimeEdit = findDateTimeEdit();
QBindable<QDateTime> dateTimeBindable(dateTimeEdit, "dateTime");
displayText.setBinding([dateTimeBindable](){ return dateTimeBindable.value().toString(); });

QProperty,QObjectBindableProperty,Qt Bindable Propertiesも参照してください

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 が読み取り専用または無効な場合は何も行いません。

bindingisReadOnly()、およびisValid()も参照してください

template <typename Functor> QPropertyBinding<T> QBindable::setBinding(Functor f)

これはオーバーロードされた関数です。

f からQPropertyBinding<T> を作成し、それを基礎となるプロパティのバインディングとして設定します。

void QBindable::setValue(const T &value)

基礎となるプロパティの値をvalue に設定します。 これにより、現在設定されているバインディングはすべて削除されます。この関数は、QBindable が読み取り専用または無効な場合、何の効果も持ちません。

value()、isValid()、isReadOnly() およびsetBinding()も参照してください

QPropertyBinding<T> QBindable::takeBinding()

現在設定されているプロパティのバインディングを削除して返します。プロパティにバインディングがない場合、返されるQPropertyBinding<T> は無効です。

bindingsetBinding 、およびhasBindingも参照してください

T QBindable::value() const

基礎となるプロパティの現在値を返します。QBindable が無効な場合、デフォルトで構築されたT が返されます。

setValue() およびisValid()も参照して ください。

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。