Класс 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 |
- 31 открытых функций унаследованных от 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.
Документация по членам-функциям
QQmlPropertyMap::QQmlPropertyMap(QObject *parent = Q_NULLPTR)
Создаёт привязываемую карту с родительским объектом parent.
[protected] QQmlPropertyMap::QQmlPropertyMap(DerivedType *derived, QObject *parent)
Создаёт привязываемую карту с родительским объектом parent. Используйте этот конструктор в классах, наследующих от QQmlPropertyMap.
Тип derived используется для регистрации карты свойств в системе метаобъектов, что необходимо для обеспечения доступа к свойствам производного класса. Этот тип должен быть производным от 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.
Примечание: signal 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/archives/qt-5.6/qqmlpropertymap.html