Spec-Zone.ru › Qt 5.11

Класс 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
  • 34 открытых функций, унаследованных от QObject

Сигналы

void valueChanged(const QString &key, const QVariant &value)
  • 2 сигнала, унаследованных от QObject

Защищённые функции

QQmlPropertyMap(DerivedType *derived, QObject *parent)
virtual QVariant updateValue(const QString &key, const QVariant &input)
  • 9 защищённых функций, унаследованных от QObject

Дополнительные наследуемые члены

  • 1 свойство, унаследованное от QObject
  • 1 открытый слот, унаследованный от QObject
  • 1 открытая переменная, унаследованная от QObject
  • 10 статических открытых членов, унаследованных от QObject
  • 2 защищённых переменных, унаследованных от QObject

Подробное описание

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

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 мета-объектов.

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

QQmlPropertyMap::QQmlPropertyMap(QObject *parent = nullptr)

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

[protected] QQmlPropertyMap::QQmlPropertyMap(DerivedType *derived, QObject *parent)

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

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

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

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

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

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

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/archives/qt-5.11/qqmlpropertymap.html

Spec-Zone.ru

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