Spec-Zone.ru › Qt 5.9

Класс QQmlParserStatus

Класс QQmlParserStatus предоставляет обновления о состоянии QML-парсера. Подробнее...

Заголовок: #include <QQmlParserStatus>
qmake: QT += qml
С момента: Qt 5.0
Наследуется от:

QQuickItem

  • Список всех членов, включая унаследованные

Открытые функции

virtual void classBegin() = 0
virtual void componentComplete() = 0

Подробное описание

Класс QQmlParserStatus предоставляет обновления о состоянии QML-парсера.

QQmlParserStatus предоставляет механизм для классов, созданных QQmlEngine, получать уведомления в ключевые моменты их создания.

Этот класс часто используется для оптимизации, поскольку позволяет отложить дорогостоящую операцию до тех пор, пока все свойства не будут установлены для объекта. Например, элемент Text QML использует состояние парсера для отложенного вычисления разметки текста до тех пор, пока все его свойства не будут установлены (мы не хотим разметку, когда присваивается text, а затем повторную разметку, когда присваивается font, и снова при присваивании width, и так далее).

Обратите внимание, что методы QQmlParserStatus вызываются только при создании класса QQmlEngine. Если вы создаёте тот же класс непосредственно из C++, эти методы не будут вызываться автоматически. Для решения этой проблемы рекомендуется начать откладывать операции с classBegin, а не от начального создания вашего класса. Это по-прежнему предотвратит многократные переоценки при начальном присваивании привязок в QML, но не будет откладывать операции, вызванные из C++.

Для использования QQmlParserStatus, необходимо унаследовать как от класса, производного от QObject, так и от QQmlParserStatus, и использовать макрос Q_INTERFACES().

class MyObject : public QObject, public QQmlParserStatus
{
    Q_OBJECT
    Q_INTERFACES(QQmlParserStatus)

public:
    MyObject(QObject *parent = 0);
    ...
    void classBegin();
    void componentComplete();
}

Версия этого класса для Qt Quick 1 называется QDeclarativeParserStatus.

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

[pure virtual] void QQmlParserStatus::classBegin()

Вызывается после создания класса, но до установки каких-либо свойств.

[pure virtual] void QQmlParserStatus::componentComplete()

Вызывается после завершения корневого компонента, который вызвал это создание. В этот момент все статические значения и значения привязок были присвоены классу.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qqmlparserstatus.html

Spec-Zone.ru

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