Spec-Zone.ru › Qt 5.6

Класс 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 и возвращает ссылку на него.

См. также 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.6/qqmlpropertymap.html

Spec-Zone.ru

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