Класс 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 метаобъектов.
Документация по функциям-членам
[protected] 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
Возвращает список ключей.
Ключи, которые были очищены, всё ещё будут отображаться в этом списке, даже если их связанные значения являются недопустимыми QVariant.
Примечание: к этой функции можно обратиться через систему метаобъектов и из 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 и возвращает ссылку на него.
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.13/qqmlpropertymap.html