QQmlPropertyMap Class
QQmlPropertyMap クラスは、QML バインディングで使用可能なキーと値のペアを設定します。詳細...
Header: | #include <QQmlPropertyMap> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Qml) target_link_libraries(mytarget PRIVATE Qt6::Qml) |
qmake: | QT += qml |
Inherits: | QObject |
パブリック関数
QQmlPropertyMap(QObject *parent = nullptr) | |
virtual | ~QQmlPropertyMap() override |
void | clear(const QString &key) |
bool | contains(const QString &key) const |
int | count() const |
(since 6.1) void | freeze() |
(since 6.1) void | insert(const QVariantHash &values) |
void | insert(const QString &key, const QVariant &value) |
bool | isEmpty() const |
QStringList | keys() const |
int | size() const |
QVariant | value(const QString &key) const |
QVariant & | operator[](const QString &key) |
QVariant | operator[](const QString &key) const |
シグナル
void | valueChanged(const QString &key, const QVariant &value) |
保護された関数
QQmlPropertyMap(DerivedType *derived, QObject *parent) | |
virtual QVariant | updateValue(const QString &key, const QVariant &input) |
詳細説明
QQmlPropertyMapは、ドメインデータをUIレイヤーに公開する便利な方法を提供します。以下の例では、C++でデータを宣言し、QMLでそれにアクセスする方法を示します。
C++ファイルの中で
// create our data QQmlPropertyMap ownerData; ownerData.insert("name", QVariant(QString("John Smith"))); ownerData.insert("phone", QVariant(QString("555-5555"))); // expose it to the UI layer QQuickView view; QQmlContext *ctxt = view.rootContext(); ctxt->setContextProperty("owner", &ownerData); view.setSource(QUrl::fromLocalFile("main.qml")); view.show();
次に、main.qml
:
Text { text: owner.name + " " + owner.phone }
キーの値が更新されるたびに、そのキーにバインドされているものも更新されます。
UIレイヤで行われた値の変更を検出するには、valueChanged ()シグナルに接続します。ただし、insert()やclear()を呼び出しても、valueChanged()は発信されません。
Note: マップからキーを削除することはできません。いったんキーが追加されると、関連する値を変更したりクリアしたりすることしかできません。
注意 : QQmlPropertyMap からクラスを派生させる場合は、protected two-argument constructor を使用して、クラスが QtMeta-Object System に正しく登録されるようにしてください。
注意: QQmlPropertyMap のQMetaObject は動的に生成され、変更されます。このメタオブジェクトに対する操作はスレッドセーフではないので、アプリケーションはメタオブジェクトへのアクセスを明示的に同期するように注意する必要があります。
メンバ関数の説明
[explicit]
QQmlPropertyMap::QQmlPropertyMap(QObject *parent = nullptr)
親オブジェクトparent を持つバインド可能なマップを構築します。
[protected]
template <typename DerivedType> QQmlPropertyMap::QQmlPropertyMap(DerivedType *derived, QObject *parent)
親オブジェクトを持つバインド可能なマップを構築しますparent 。このコンストラクタは QQmlPropertyMap から派生したクラスで使用します。
derived の型は、メタオブジェクトシステムにプロパティマップを登録するために使用されます。これは、派生クラスのプロパティに確実にアクセスできるようにするために必要です。この型はQQmlPropertyMapから派生したものでなければなりません。
[override virtual noexcept]
QQmlPropertyMap::~QQmlPropertyMap()
バインド可能なマップを破棄します。
void QQmlPropertyMap::clear(const QString &key)
key に関連付けられた値(もしあれば)をクリアします。
bool QQmlPropertyMap::contains(const QString &key) const
マップにkey が含まれている場合は true を返します。
size()も参照してください 。
int QQmlPropertyMap::count() const
これはオーバーロードされた関数です。
size() と同じ。
[since 6.1]
void QQmlPropertyMap::freeze()
このプロパティ・マップへのプロパティの追加を禁止します。既存のプロパティは変更またはクリアできます。
その代わり、既存のプロパティの内部キャッシュがオンになり、QML からのアクセスが速くなる可能性があります。
この関数は Qt 6.1 で導入されました。
[since 6.1]
void QQmlPropertyMap::insert(const QVariantHash &values)
QQmlPropertyMap にvalues を挿入します。
存在しないキーは自動的に作成されます。
この方法は、insert(key, value)
を連続して何度も呼び出すよりもかなり高速です。
この関数は Qt 6.1 で導入されました。
void QQmlPropertyMap::insert(const QString &key, const QVariant &value)
key に関連付けられた値をvalue に設定します。
キーが存在しない場合は、自動的に作成されます。
bool QQmlPropertyMap::isEmpty() const
マップにキーがない場合はtrueを返し、そうでない場合はfalseを返します。
size()も参照してください 。
[invokable]
QStringList QQmlPropertyMap::keys() const
キーのリストを返します。
クリアされたキーは、関連する値が無効な QVariants であっても、このリストに表示されます。
注意: この関数はメタ・オブジェクト・システムやQMLから呼び出すことができます。Q_INVOKABLE を参照してください。
int QQmlPropertyMap::size() const
マップ内のキーの数を返します。
isEmpty() およびcount()も参照して ください。
[virtual protected]
QVariant QQmlPropertyMap::updateValue(const QString &key, const QVariant &input)
キーkey に格納される新しい値を返します。この関数は QML からのプロパティへの更新をインターセプトするために提供されます。 QML から提供される値はinput です。
この関数をオーバーライドして、更新されたプロパティ値を操作することができます。この関数は QML から値が更新されたときのみ呼び出されることに注意してください。
QVariant QQmlPropertyMap::value(const QString &key) const
key に関連付けられた値を返します。
このキーに値が設定されていない(あるいは値がクリアされている)場合、 invalidQVariant が返されます。
[signal]
void QQmlPropertyMap::valueChanged(const QString &key, const QVariant &value)
key は変更されたvalue に対応するキーです。
QVariant &QQmlPropertyMap::operator[](const QString &key)
変更可能な参照として、キーkey に関連づけられた値を返します。
マップにキーkey を持つ項目がない場合、この関数は無効なQVariant をキーkey を持つマップに挿入し、その参照を返します。
QVariant QQmlPropertyMap::operator[](const QString &key) const
これはオーバーロードされた関数です。
value() と同じです。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。