Spec-Zone.ru › Qt

Класс 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.2/qqmlpropertymap.html

Spec-Zone.ru

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