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)

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 からのプロパティへの更新をインターセプトするために提供されます。 QML から提供される値はinput です。

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

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

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

このキーに値が設定されていない(あるいは値がクリアされている)場合、 invalidQVariant が返されます。

[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() と同じです。

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