Класс QQmlParserStatus
Класс QQmlParserStatus предоставляет обновления о состоянии парсера QML. Подробнее...
| Заголовок: | #include <QQmlParserStatus> |
| qmake: | QT += qml |
| С момента: | Qt 5.0 |
Этот класс был представлен в Qt 5.0.
Открытые функции
| 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-5.13/qqmlparserstatus.html