Spec-Zone.ru › Qt 6.1

Класс QQmlPropertyMap

Класс QQmlPropertyMap позволяет задавать пары ключ-значение, которые могут использоваться в связываниях QML. Подробнее...

Заголовок: #include <QQmlPropertyMap>
CMake: find_package(Qt6 COMPONENTS Qml REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Qml)
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 freeze()
void insert(const QString &key, const QVariant &value)
void insert(const QVariantHash &values)
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 Meta-Object System.

Примечание: QMetaObject QQmlPropertyMap генерируется и изменяется динамически. Операции с этим метаобъектом не являются потокобезопасными, поэтому приложениям необходимо позаботиться об явной синхронизации доступа к метаобъекту.

Документация по членам функции

[protected] template <typename DerivedType> 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().

[since 6.1] void QQmlPropertyMap::freeze()

Запрещает добавление других свойств в эту карту свойств. Существующие свойства могут быть изменены или очищены.

В свою очередь, для существующих свойств включается внутренняя кэш-память, что может привести к более быстрому доступу из QML.

Эта функция была добавлена в Qt 6.1.

void QQmlPropertyMap::insert(const QString &key, const QVariant &value)

Устанавливает значение, связанное с key, на value.

Если ключ не существует, он автоматически создается.

[since 6.1] void QQmlPropertyMap::insert(const QVariantHash &values)

Вставляет values в QQmlPropertyMap.

Ключи, которых нет, автоматически создаются.

Этот метод значительно быстрее, чем вызов insert(key, value) много раз подряд.

Эта функция была добавлена в Qt 6.1.

bool QQmlPropertyMap::isEmpty() const

Возвращает true, если карта не содержит ключей; в противном случае возвращает false.

См. также size().

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

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

Spec-Zone.ru

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