Класс 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 |
| Наследуется от: |
Открытые функции
| виртуальный void | classBegin() = 0 |
| виртуальный 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.0/qqmlparserstatus.html