QQmlParserStatus Class
QQmlParserStatus クラスは、QML パーサーの状態に関する最新情報を提供します。詳細...
| ヘッダー: | #include <QQmlParserStatus> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Qml) target_link_libraries(mytarget PRIVATE Qt6::Qml) |
| qmake: | QT += qml |
| 継承元: |
パブリック関数
| virtual void | classBegin() = 0 |
| virtual void | componentComplete() = 0 |
詳細な説明
QQmlParserStatus は、QQmlEngine によってインスタンス化されたクラスが、その生成過程の重要な時点で通知を受け取るための仕組みを提供します。
このクラスは、オブジェクトのすべてのプロパティが設定されるまで、負荷の高い操作を先送りすることができるため、最適化の目的でよく使用されます。 たとえば、QML のText 要素は、パーサーステータスを使用して、すべてのプロパティが設定されるまでテキストのレイアウトを延期しています(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 = nullptr);
// ...
void classBegin() override;
void componentComplete() override;
};© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.