Spec-Zone.ru › Qt 5.15

Класс QQmlPropertyMap

Класс QQmlPropertyMap позволяет задавать пары ключ-значение, которые могут использоваться в привязках QML. Подробнее...

Заголовок: #include <QQmlPropertyMap>
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
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 предоставляет удобный способ экспонирования данных домена в слой пользовательского интерфейса. Следующий пример показывает, как можно объявить данные в 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 }

Привязка динамическая — всякий раз, когда значение ключа обновляется, все, что привязано к этому ключу, также будет обновлено.

Чтобы обнаружить изменения значений, внесённые в слой пользовательского интерфейса, можно подключиться к сигналу valueChanged(). Однако обратите внимание, что valueChanged() НЕ излучается при изменениях, осуществляемых с помощью вызова insert() или clear() — он излучается только при обновлении значения из QML.

Примечание: Удалить ключи из карты нельзя; после добавления ключа можно только изменить или очистить связанное с ним значение.

Примечание: При наследовании класса от QQmlPropertyMap используйте защищенный конструктор с двумя аргументами, чтобы гарантировать правильную регистрацию класса в системе метаобъектов Qt.

Примечание: QMetaObject объекта QQmlPropertyMap генерируется и модифицируется динамически. Операции с этим метаобъектом не являются потокобезопасными, поэтому приложения должны позаботиться о явной синхронизации доступа к метаобъекту.

Документация по членам-функциям

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

Создаёт карту с привязкой с родительским объектом parent. Используйте этот конструктор в классах, наследуемых от QQmlPropertyMap.

Тип derived используется для регистрации карты свойств в системе метаобъектов, что необходимо для обеспечения доступа к свойствам производного класса. Этот тип должен быть производным от QQmlPropertyMap.

QQmlPropertyMap::QQmlPropertyMap(QObject *parent = nullptr)

Создаёт карту с привязкой с родительским объектом parent.

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

Этот сигнал излучается всякий раз, когда одно из значений в карте изменяется. key — ключ, соответствующий value, который был изменён.

Примечание: valueChanged() НЕ излучается при изменениях, осуществляемых с помощью вызова insert() или clear() — он излучается только при обновлении значения из QML.

[override virtual] QQmlPropertyMap::~QQmlPropertyMap()

Уничтожает карту с привязкой.

void QQmlPropertyMap::clear(const QString &key)

Очищает значение (если оно есть) связанное с key.

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

Возвращает true, если карта содержит key.

См. также size().

int QQmlPropertyMap::count() const

Это перегруженная функция.

То же самое, что и size().

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

Устанавливает значение, связанное с key, равное value.

Если ключ не существует, он автоматически создаётся.

bool QQmlPropertyMap::isEmpty() const

Возвращает true, если карта не содержит ключей; в противном случае возвращает false.

См. также size().

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.

Если для данного ключа не было установлено значения (или если значение было очищено), возвращается недопустимое QVariant.

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

Возвращает значение, связанное с ключом key, как ссылку для изменения.

Если в карте нет элемента с ключом key, функция вставляет в карту недопустимый QVariant с ключом key и возвращает ссылку на него.

См. также insert() и value().

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

Это перегруженная функция.

То же самое, что и value().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qqmlpropertymap.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API