Класс 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 |
- 31 открытых функций унаследованных от QObject
Сигналы
| void | valueChanged(const QString &key, const QVariant &value) |
- 2 сигнала унаследованных от QObject
Статические открытые члены
| const QMetaObject | staticMetaObject |
- 9 статических открытых членов унаследованных от QObject
Защищенные функции
| QQmlPropertyMap(DerivedType *derived, QObject *parent) | |
| virtual QVariant | updateValue(const QString &key, const QVariant &input) |
- 9 защищенных функций унаследованных от 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 используется для регистрации карты свойств в системе метаобъектов, что необходимо для доступа к свойствам производного класса. Этот тип должен быть производным от 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
Возвращает список ключей.
Ключи, которые были очищены, всё ещё будут отображаться в этом списке, даже если их связанные значения являются недопустимыми 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.
[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.12/qqmlpropertymap.html