Spec-Zone.ru › Qt 6.1

Класс QQmlParserStatus

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

Заголовок: #include <QQmlParserStatus>
CMake: find_package(Qt6 COMPONENTS Qml REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Qml)
qmake: QT += qml
С: Qt 5.0
Наследуется от:

QQuickItem

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

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

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

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

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();
};

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

[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-6.1/qqmlparserstatus.html

Spec-Zone.ru

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