QQmlPropertyMap Class

Die Klasse QQmlPropertyMap ermöglicht es, Schlüssel-Wert-Paare zu setzen, die in QML-Bindungen verwendet werden können. Mehr...

Kopfzeile: #include <QQmlPropertyMap>
CMake: find_package(Qt6 REQUIRED COMPONENTS Qml)
target_link_libraries(mytarget PRIVATE Qt6::Qml)
qmake: QT += qml
Vererbt: QObject

Öffentliche Funktionen

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

Signale

void valueChanged(const QString &key, const QVariant &value)

Geschützte Funktionen

QQmlPropertyMap(DerivedType *derived, QObject *parent)
virtual QVariant updateValue(const QString &key, const QVariant &input)

Detaillierte Beschreibung

QQmlPropertyMap bietet eine bequeme Möglichkeit, Domänendaten für die UI-Schicht bereitzustellen. Das folgende Beispiel zeigt, wie Sie Daten in C++ deklarieren und dann in QML darauf zugreifen können.

In der C++-Datei:

// 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();

Dann, in main.qml:

Text { text: owner.name + " " + owner.phone }

Die Bindung ist dynamisch - immer wenn der Wert eines Schlüssels aktualisiert wird, wird alles, was an diesen Schlüssel gebunden ist, ebenfalls aktualisiert.

Um Wertänderungen in der UI-Schicht zu erkennen, können Sie sich mit dem Signal valueChanged() verbinden. Beachten Sie jedoch, dass valueChanged() NICHT ausgegeben wird, wenn Änderungen durch den Aufruf von insert() oder clear() vorgenommen werden - es wird nur ausgegeben, wenn ein Wert von QML aktualisiert wird.

Hinweis: Es ist nicht möglich, Schlüssel aus der Map zu entfernen; sobald ein Schlüssel hinzugefügt wurde, können Sie nur den zugehörigen Wert ändern oder löschen.

Hinweis: Wenn Sie eine Klasse von QQmlPropertyMap ableiten, verwenden Sie die protected two-argument constructor, die sicherstellt, dass die Klasse korrekt beim Qt Meta-Object System registriert ist.

Hinweis: Die QMetaObject einer QQmlPropertyMap wird dynamisch erzeugt und verändert. Operationen auf dieses Meta-Objekt sind nicht thread-sicher, so dass Anwendungen darauf achten müssen, den Zugriff auf das Meta-Objekt explizit zu synchronisieren.

Dokumentation der Mitgliedsfunktionen

[explicit] QQmlPropertyMap::QQmlPropertyMap(QObject *parent = nullptr)

Konstruiert eine bindbare Karte mit dem übergeordneten Objekt parent.

[protected] template <typename DerivedType> QQmlPropertyMap::QQmlPropertyMap(DerivedType *derived, QObject *parent)

Konstruiert eine bindbare Map mit dem übergeordneten Objekt parent. Verwenden Sie diesen Konstruktor in von QQmlPropertyMap abgeleiteten Klassen.

Der Typ von derived wird verwendet, um die Eigenschaftskarte beim Meta-Objektsystem zu registrieren, was notwendig ist, um sicherzustellen, dass die Eigenschaften der abgeleiteten Klasse zugänglich sind. Dieser Typ muss von QQmlPropertyMap abgeleitet sein.

[override virtual noexcept] QQmlPropertyMap::~QQmlPropertyMap()

Zerstört die bindungsfähige Karte.

void QQmlPropertyMap::clear(const QString &key)

Löscht den mit key verbundenen Wert (falls vorhanden).

bool QQmlPropertyMap::contains(const QString &key) const

Gibt true zurück, wenn die Karte key enthält.

Siehe auch size().

int QQmlPropertyMap::count() const

Dies ist eine überladene Funktion.

Dasselbe wie size().

[since 6.1] void QQmlPropertyMap::freeze()

Verhindern, dass weitere Eigenschaften zu dieser Eigenschaftskarte hinzugefügt werden. Vorhandene Eigenschaften können geändert oder gelöscht werden.

Im Gegenzug wird ein interner Cache für die vorhandenen Eigenschaften aktiviert, was zu einem schnelleren Zugriff von QML führen kann.

Diese Funktion wurde in Qt 6.1 eingeführt.

[since 6.1] void QQmlPropertyMap::insert(const QVariantHash &values)

Fügt die values in die QQmlPropertyMap ein.

Nicht existierende Schlüssel werden automatisch erstellt.

Diese Methode ist wesentlich schneller als der mehrmalige Aufruf von insert(key, value) hintereinander.

Diese Funktion wurde in Qt 6.1 eingeführt.

void QQmlPropertyMap::insert(const QString &key, const QVariant &value)

Setzt den mit key verbundenen Wert auf value.

Wenn der Schlüssel nicht vorhanden ist, wird er automatisch erstellt.

bool QQmlPropertyMap::isEmpty() const

Gibt true zurück, wenn die Karte keine Schlüssel enthält; andernfalls wird false zurückgegeben.

Siehe auch size().

[invokable] QStringList QQmlPropertyMap::keys() const

Gibt die Liste der Schlüssel zurück.

Schlüssel, die gelöscht wurden, erscheinen weiterhin in dieser Liste, auch wenn ihre zugehörigen Werte ungültige QVarianten sind.

Hinweis: Diese Funktion kann über das Meta-Objektsystem und von QML aus aufgerufen werden. Siehe Q_INVOKABLE.

int QQmlPropertyMap::size() const

Gibt die Anzahl der Schlüssel in der Karte zurück.

Siehe auch isEmpty() und count().

[virtual protected] QVariant QQmlPropertyMap::updateValue(const QString &key, const QVariant &input)

Gibt den neuen zu speichernden Wert für den Schlüssel key zurück. Diese Funktion wird bereitgestellt, um Aktualisierungen einer Eigenschaft von QML abzufangen, wobei der von QML bereitgestellte Wert input ist.

Überschreiben Sie diese Funktion, um den Eigenschaftswert bei der Aktualisierung zu manipulieren. Beachten Sie, dass diese Funktion nur aufgerufen wird, wenn der Wert aus QML aktualisiert wird.

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

Gibt den mit key verbundenen Wert zurück.

Wenn für diesen Schlüssel kein Wert festgelegt wurde (oder wenn der Wert gelöscht wurde), wird ein ungültiger QVariant zurückgegeben.

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

Dieses Signal wird immer dann ausgegeben, wenn einer der Werte in der Map geändert wird. key ist der Schlüssel, der dem value entspricht, der geändert wurde.

Hinweis: valueChanged() wird NICHT ausgegeben, wenn Änderungen durch den Aufruf von insert() oder clear() vorgenommen werden - es wird nur ausgegeben, wenn ein Wert aus QML aktualisiert wird.

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

Gibt den zum Schlüssel key gehörenden Wert als veränderbaren Verweis zurück.

Wenn die Map kein Element mit dem Schlüssel key enthält, fügt die Funktion ein ungültiges QVariant mit dem Schlüssel key in die Map ein und gibt einen Verweis darauf zurück.

Siehe auch insert() und value().

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

Dies ist eine überladene Funktion.

Dasselbe wie 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.