QQmlPropertyMap Class

QQmlPropertyMap クラスは、QML バインディングで使用可能なキーと値のペアを設定します。詳細...

ヘッダ #include <QQmlPropertyMap>
CMake: find_package(Qt6 REQUIRED COMPONENTS Qml)
target_link_libraries(mytarget PRIVATE Qt6::Qml)
qmake: QT += qml
継承: 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 が含まれていれば真を返す。

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)

QQmlPropertyMapvalues を挿入する。

存在しないキーは自動的に作成される。

この方法は、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 から提供された値がinput である場合、QML からのプロパティへの更新をインターセプトするために用意されています。

この関数をオーバーライドすることで、更新されたプロパティ値を操作することができます。この関数は QML から値が更新されたときのみ呼び出されることに注意してください。

QVariant QQmlPropertyMap::value(const QString &key) const

key に関連付けられた値を返す。

このキーに値が設定されていない場合(または値がクリアされている場合)、無効なQVariant が返される。

[signal] void QQmlPropertyMap::valueChanged(const QString &key, const QVariant &value)

key は変更されたvalue に対応するキーです。

注意: valueChanged() はinsert() やclear() の呼び出しによって変更されたときには発せられません

QVariant &QQmlPropertyMap::operator[](const QString &key)

キーkey に関連付けられた値を、変更可能な参照として返す。

マップにキーkey を持つ項目がない場合、この関数は無効なQVariant をキーkey を持つマップに挿入し、その参照を返します。

insert() およびvalue()も参照

QVariant QQmlPropertyMap::operator[](const QString &key) const

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

value() と同じ。

© 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.