Класс QQmlPropertyMap
Класс QQmlPropertyMap позволяет устанавливать пары ключ-значение, которые могут быть использованы в привязках QML. Подробнее...
| Заголовок: | #include <QQmlPropertyMap> |
| qmake: | QT += qml |
| Создается из: | ExtendedAttributes |
| Наследуется от: | QObject |
Открытые функции
| QQmlPropertyMap(QObject *parent = Q_NULLPTR) | |
| virtual | ~QQmlPropertyMap() |
| 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 |
- 32 открытых функции унаследованные от 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
- 11 статические открытые члены унаследованные от 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 Meta-Object System.
Документация по функциям-членам
QQmlPropertyMap::QQmlPropertyMap(QObject *parent = Q_NULLPTR)
Создает привязываемую карту с родительским объектом parent.
[protected] QQmlPropertyMap::QQmlPropertyMap(DerivedType *derived, QObject *parent)
Создает привязываемую карту с родительским объектом parent. Используйте этот конструктор в классах, унаследованных от QQmlPropertyMap.
Тип derived используется для регистрации карты свойств в системе метаобъектов Meta-Object System, что необходимо для обеспечения доступа к свойствам производного класса. Этот тип должен быть производным от QQmlPropertyMap.
[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.
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 и возвращает ссылку на него.
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.9/qqmlpropertymap.html