QProperty Class

template <typename T> class QProperty

QPropertyクラスは、プロパティの自動バインディングを可能にするテンプレート・クラスです。詳細...

ヘッダー #include <QProperty>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
以来:Qt 6.0
継承: QPropertyData

パブリック関数

QProperty()
QProperty(Functor &&f)
QProperty(T &&initialValue)
QProperty(const QPropertyBinding<T> &binding)
QProperty(const T &initialValue)
~QProperty()
QPropertyNotifier addNotifier(Functor f)
QPropertyBinding<T> binding() const
QPropertyChangeHandler<Functor> onValueChanged(Functor f)
QPropertyBinding<T> setBinding(const QPropertyBinding<T> &newBinding)
QPropertyBinding<T> setBinding(Functor f)
bool setBinding(const QUntypedPropertyBinding &newBinding)
void setValue(QProperty<T>::parameter_type newValue)
void setValue(QProperty<T>::rvalue_ref newValue)
QPropertyChangeHandler<Functor> subscribe(Functor f)
QPropertyBinding<T> takeBinding()
QProperty<T>::parameter_type value() const
QProperty<T> &operator=(QProperty<T>::parameter_type newValue)
QProperty<T> &operator=(QProperty<T>::rvalue_ref newValue)
(since 6.2) void beginPropertyUpdateGroup()
(since 6.2) void endPropertyUpdateGroup()

詳細な説明

QProperty<T> はQt Bindable Properties を実装するクラスの一つです。Tのインスタンスを保持するコンテナです。これに値を代入したり、value ()関数やT変換演算子を使って読み取ることができます。また、値を動的に計算する式(バインディング式)にプロパティを結びつけることもできます。これはC++のラムダとして表現され、アプリケーション内の異なるプロパティ間の関係を表現するために使用することができます。

注意: QMLでは、Q_PROPERTYQProperty をBINDABLEキーワードで公開することが重要です。その結果、QMLエンジンはこれをバインダブルインターフェイスとして使用し、プロパティのバインディングを設定します。そして、そのバインディングは通常のAPIを介してC++とやりとりすることができます:QProperty<T>::onValueChanged,QProperty::takeBinding and QBindable::hasBinding プロパティが BINDABLE の場合、エンジンは C++ プロパティシステム固有の変更追跡機能を使用して変更に関する通知を受け取ります。

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

void QProperty::setValue(QProperty<T>::parameter_type newValue)

void QProperty::setValue(QProperty<T>::rvalue_ref newValue)

こ のプ ロ パテ ィ にnewValue を割 り 当て、 こ のプ ロ パテ ィ に関連付け ら れてい る バ イ ンデ ィ ン グがあれば、 それを削除 し ます。

QProperty<T> &QProperty::operator=(QProperty<T>::parameter_type newValue)

QProperty<T> &QProperty::operator=(QProperty<T>::rvalue_ref newValue)

このプロパティにnewValue を割り当て、このQProperty への参照を返す。

QProperty::QProperty()

デフォルトで構築された T のインスタンスでプロパティを構築します。

[explicit] template <typename Functor> QProperty::QProperty(Functor &&f)

提供されたバインディング式f に結び付けられたプロパティを構築します。プロパティの値は、新しいバインディングの評価結果に設定されます。バインディングの依存関係が変更されるたびに、バインディングが再評価され、それに応じてプロパティの値が更新されます。

[explicit default] QProperty::QProperty(T &&initialValue)

Move- 提供されたinitialValue でプロパティを構築します。

[explicit] QProperty::QProperty(const QPropertyBinding<T> &binding)

指定されたbinding 式に結び付けられたプロパティを構築します。プロパティの値は、新しいバインディングの評価結果に設定されます。バインディングの依存関係が変更されるたびに、バインディングが再評価され、それに応じてプロパティの値が更新されます。

[explicit default] QProperty::QProperty(const T &initialValue)

提供されたinitialValue でプロパティを構築します。

QProperty::~QProperty()

財産を破壊する。

template <typename Functor> QPropertyNotifier QProperty::addNotifier(Functor f)

与えられたファンクタf を、プロパティの値が変更されるたびに呼び出されるコールバックとしてサブスクライブする。

コールバックf は、パラメータを持たないプレーンなコール演算子() を持つ型であることが期待されます。つまり、C++のラムダ式やstd::関数、あるいは呼び出し演算子を持つカスタム構造体を指定することができます。

返されたプロパティ変更ハンドラオブジェクトは、サブスクリプションを追跡します。このオブジェクトがスコープ外に出ると、コールバックは購読を解除されます。

返されるオブジェクトはテンプレートではないので、このメソッドはonValueChanged() よりも使いやすい場合があります。そのため、クラスのメンバなど、より簡単に格納することができます。

onValueChanged() およびsubscribe()も参照

QPropertyBinding<T> QProperty::binding() const

このプロパティに関連付けられているバインディング式を返します。そのような関連付けが存在しない場合は、デフォルトで構築された QPropertyBinding<T> が返されます。

setBinding()も参照してください

template <typename Functor> QPropertyChangeHandler<Functor> QProperty::onValueChanged(Functor f)

与えられたファンクタf を、プロパティの値が変更されるたびに呼び出されるコールバックとして登録します。値が変更されるたびに、ハンドラは即座に呼び出されるか、コンテキストに応じて遅延されます。

コールバックf は、パラメータを持たないプレーンなコール演算子() を持つ型であることが期待されます。つまり、C++のラムダ式やstd::関数、あるいはコール演算子を持つカスタム構造体を指定することができます。

返されたプロパティ変更ハンドラ・オブジェクトは、登録を追跡します。このオブジェクトがスコープ外に出ると、コールバックは登録解除されます。

QPropertyBinding<T> QProperty::setBinding(const QPropertyBinding<T> &newBinding)

このプロパティの値を、指定されたnewBinding 式に関連付け、以前に関連付けられたバインディングを返します。プロパティの値は、新しいバインディングの評価結果に設定されます。バインディングの依存関係が変更されるたびに、バインディングが再評価され、それに応じてプロパティの値が更新されます。

binding()も参照してください

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

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

このプロパティの値を提供されたファンクタf に関連付け、以前に関連付けられたバインディングを返します。プロパティの値は、新しいバインディングの評価結果に設定されます。バインディングの依存関係が変更されるたびに、バインディングは再評価され、それに応じてプロパティの値も更新されます。

プロパティ・バインディングの定式化も参照してください

bool QProperty::setBinding(const QUntypedPropertyBinding &newBinding)

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

このプロパティの値を、指定されたnewBinding 式に関連付けます。プロパティの値は、新しいバインディングの評価結果に設定されます。バインディングの依存関係が変更されるたびに、バインディングが再評価され、それに応じてプロパティの値が更新されます。

このプロパティの型が、バインディング関数が返す型と同じであればtrueを返し、そうでなければfalseを返します。

template <typename Functor> QPropertyChangeHandler<Functor> QProperty::subscribe(Functor f)

指定されたファンクタf を、プロパティの値が将来変更されるたびに即座に呼び出されるコールバックとしてサブスクライブします。値が変更されるたびに、ハンドラは即座に呼び出されるか、コンテキストに応じて遅延されます。

コールバックf は、コピー可能で、パラメータを持たないプレーンなコール演算子()を持つ型であることが期待されます。つまり、C++のラムダ式やstd::関数、あるいはコール演算子を持つカスタム構造体を指定することができます。

返されたプロパティ変更ハンドラオブジェクトは、サブスクリプションを追跡します。このオブジェクトがスコープ外に出ると、コールバックの購読が解除されます。

QPropertyBinding<T> QProperty::takeBinding()

このプロパティからバインディング式の関連付けを解除し、それを返します。この関数を呼び出した後、プロパティの値が変更されるのは、そのプロパティに新しい値を代入したときか、新しいバインディングが設定されたときだけです。

QProperty<T>::parameter_type QProperty::value() const

プロパティの値を返します。値を返す前に、このプロパティに関連付けられているバインディング式を評価することができます。

setValue()も参照してください

関連する非会員

[since 6.2] void beginPropertyUpdateGroup()

プロパティ更新グループの開始を示します。このグループの中では、プロパティを変更しても、依存するプロパティが直ちに更新されるわけでも、変更通知が起動されるわけでもありません。それらは、endPropertyUpdateGroup を呼び出すことでグループが終了するまで、延期されます。

グループは入れ子にすることができます。その場合、遅延が終了するのは、一 番外側のグループが終了した後です。

注釈 変更通知は、グループの影響を受けるすべてのプロパティ値が新しい値に更新された後にのみ送信されます。これにより、複数のプロパティを更新する必要がある場合にクラスの不変性を再確立することができ、外部のオブザーバーが矛盾した状態に気づくのを防ぐことができます。

この関数は Qt 6.2 で導入されました。

Qt::endPropertyUpdateGroup およびQScopedPropertyUpdateGroupも参照して ください。

[since 6.2] void endPropertyUpdateGroup()

プロパティ更新グループを終了します。一番外側のグループが終了し、遅延バインディングの評価と通知が行われるようになった場合。

警告 beginPropertyUpdateGroup を呼び出すことなく endPropertyUpdateGroup を呼び出すと、未定義の動作になります。

この関数は Qt 6.2 で導入されました。

Qt::beginPropertyUpdateGroupQScopedPropertyUpdateGroupも参照してください

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.