QBindable Class
template <typename T> class QBindableQBindableは、バインディング可能なプロパティのラッパー・クラスです。様々なプロパティ・クラスの違いを抽象化しながら、型安全な操作を可能にします。詳細...
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)
obj のQ_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 が読み取り専用または無効な場合は何も行いません。
binding 、isReadOnly()、および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>
は無効です。
binding 、setBinding 、およびhasBindingも参照してください 。
T QBindable::value() const
基礎となるプロパティの現在値を返します。QBindable が無効な場合、デフォルトで構築されたT
が返されます。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。