QQmlApplicationEngine Class
QQmlApplicationEngine は、単一の QML ファイルからアプリケーションをロードする便利な方法を提供します。詳細...
ヘッダー | #include <QQmlApplicationEngine> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Qml) target_link_libraries(mytarget PRIVATE Qt6::Qml) |
qmake: | QT += qml |
継承: | QQmlEngine |
パブリック関数
QQmlApplicationEngine(QObject *parent = nullptr) | |
QQmlApplicationEngine(const QString &filePath, QObject *parent = nullptr) | |
QQmlApplicationEngine(const QUrl &url, QObject *parent = nullptr) | |
(since 6.5) | QQmlApplicationEngine(QAnyStringView uri, QAnyStringView typeName, QObject *parent = nullptr) |
virtual | ~QQmlApplicationEngine() override |
QList<QObject *> | rootObjects() const |
パブリックスロット
void | load(const QString &filePath) |
void | load(const QUrl &url) |
void | loadData(const QByteArray &data, const QUrl &url = QUrl()) |
(since 6.5) void | loadFromModule(QAnyStringView uri, QAnyStringView typeName) |
(since 6.0) void | setExtraFileSelectors(const QStringList &extraFileSelectors) |
void | setInitialProperties(const QVariantMap &initialProperties) |
シグナル
void | objectCreated(QObject *object, const QUrl &url) |
(since 6.4) void | objectCreationFailed(const QUrl &url) |
詳細説明
このクラスは、QQmlEngine とQQmlComponent を組み合わせ、一つの QML ファイルをロードする便利な方法を提供します。また、C++/QMLハイブリッドアプリケーションが通常C++から制御するような、アプリケーションの中心的な機能をQMLに公開します。
このような使い方ができます:
#include <QGuiApplication> #include <QQmlApplicationEngine> int main(int argc, char *argv[]) { QGuiApplication app(argc, argv); QQmlApplicationEngine engine("main.qml"); return app.exec(); }
QQuickView とは異なり、QQmlApplicationEngine はルートウィンドウを自動生成しません。Qt Quick のビジュアルアイテムを使用する場合は、Window の中に配置する必要があります。
QQmlApplicationEngine では、QGuiApplication を必要とする QML モジュール(QtQuick
など)を使用していない場合、QCoreApplication を使用することもできます。
デフォルトのQQmlEngine からの設定変更のリスト:
- Qt の接続quit() からQCoreApplication::quit() へ。
- メインの QML ファイルに隣接する i18n ディレクトリから翻訳ファイルを自動的に読み込みます。
- 翻訳ファイルには、"qml_"というプレフィックスが必要です(例:qml_ja_JP.qm)。
QJSEngine::uiLanguage
/Qt.uiLanguage
プロパティが変更されると、翻訳ファイルはリロードされます。- シーンにQQuickWindow が含まれている場合、自動的に孵化コントローラを設定します。
- URL インターセプターとして
QQmlFileSelector
を自動的に設定し、すべての QML ファイルとアセットにファイル セレクターを適用します。
QQmlEngine から継承したメソッドを使用することで、エンジンの動作をさらに微調整することができます。
メンバー関数ドキュメント
QQmlApplicationEngine::QQmlApplicationEngine(QObject *parent = nullptr)
与えられたparent で新しい QQmlApplicationEngine を作成する。QMLファイルを読み込むためには、後でload() を呼び出す必要があります。
QQmlApplicationEngine::QQmlApplicationEngine(const QString &filePath, QObject *parent = nullptr)
新しい QQmlApplicationEngine を作成し、与えられたfilePath にある QML ファイルをロードします。 はローカルファイルまたは qrc パスでなければなりません。相対パスが与えられた場合、アプリケーションの作業ディレクトリからの相対パスとして解釈されます。
これは便宜的なものであり、空のコンストラクタを使用し、その後に load を呼び出すのと同じです。
QQmlApplicationEngine::QQmlApplicationEngine(const QUrl &url, QObject *parent = nullptr)
新しい QQmlApplicationEngine を作成し、与えられたurl にある QML ファイルをロードします。これは便宜的なものであり、空のコンストラクタを使用し、その後にloadを呼び出すのと同じです。
[explicit, since 6.5]
QQmlApplicationEngine::QQmlApplicationEngine(QAnyStringView uri, QAnyStringView typeName, QObject *parent = nullptr)
新しい QQmlApplicationEngine を作成し、uri とtypeName で指定された QML タイプをロードします。これは便宜上提供されているもので、空のコンストラクタを使用し、その後にloadFromModule を呼び出すのと同じです。
この関数は Qt 6.5 で導入されました。
[override virtual noexcept]
QQmlApplicationEngine::~QQmlApplicationEngine()
QQmlApplicationEngine と読み込んだすべての QML オブジェクトを破棄します。
[slot]
void QQmlApplicationEngine::load(const QString &filePath)
filePath にあるルートQMLファイルを読み込みます。filePath はローカルファイルへのパスか、リソースファイルシステム内のファイルへのパスでなければなりません。filePath が相対パスの場合、アプリケーションの作業ディレクトリからの相対パスとみなされます。ファイルによって定義されたオブジェクト・ツリーは直ちにインスタンス化される。
エラーが発生した場合は、qWarning でエラー・メッセージが表示されます。
[slot]
void QQmlApplicationEngine::load(const QUrl &url)
url にあるルート QML ファイルを読み込みます。このファイルで定義されたオブジェクトツリーは、ローカルのファイル URL に対して直ちに作成されます。objectCreated シグナルをリッスンして、オブジェクトツリーの準備ができたことを確認します。
エラーが発生した場合、NULLポインタをパラメータとしてobjectCreated シグナルが発行され、エラーメッセージはqWarning で表示されます。
[slot]
void QQmlApplicationEngine::loadData(const QByteArray &data, const QUrl &url = QUrl())
data で指定された QML を読み込みます。data で定義されたオブジェクトツリーが直ちにインスタンス化されます。
url が指定された場合、それがコンポーネントのベース URL として使用されます。これはデータやエラーメッセージの相対パスに影響します。
エラーが発生した場合、エラーメッセージはqWarning で表示されます。
[slot, since 6.5]
void QQmlApplicationEngine::loadFromModule(QAnyStringView uri, QAnyStringView typeName)
uri で指定されたモジュールからQMLの型typeName を読み込みます。型がリモートのURLにあるQMLファイルに由来する場合、型は非同期にロードされます。オブジェクトツリーの準備ができたらobjectCreated シグナルを聞いてください。
エラーが発生した場合、NULLポインタをパラメータとしてobjectCreated シグナルが発せられ、エラーメッセージはqWarning で表示されます。
QQmlApplicationEngine engine; engine.loadFromModule("QtQuick", "Rectangle");
注: uri で特定されたモジュールは、QMLファイル内でimport uri
を実行するのと同じように、インポートパスで検索されます。モジュールがその場所に見つからない場合、この関数は失敗します。
この関数は Qt 6.5 で導入されました。
QQmlComponent::loadFromModuleも参照してください 。
[signal]
void QQmlApplicationEngine::objectCreated(QObject *object, const QUrl &url)
このシグナルは、オブジェクトのロードが終了したときに発せられる。ロードが成功した場合、object にロードされたオブジェクトへのポインタが格納され、そうでなければポインタはNULLとなる。
object の元となったコンポーネントへのurl も提供される。
注意: コンポーネントへのパスが相対パスを含むQString として提供された場合、url にはファイルへの完全に解決されたパスが含まれます。
[signal, since 6.4]
void QQmlApplicationEngine::objectCreationFailed(const QUrl &url)
このシグナルは、エラーが発生してロードが終了したときに発せられる。
ロードに失敗したコンポーネントへのurl が引数として提供される。
QGuiApplication app(argc, argv); QQmlApplicationEngine engine; // exit on error QObject::connect(&engine, &QQmlApplicationEngine::objectCreationFailed, &app, []() { QCoreApplication::exit(-1); }, Qt::QueuedConnection); engine.load(QUrl()); return app.exec();
注意: コンポーネントへのパスが相対パスを含むQString として提供された場合、url にはファイルへの完全に解決されたパスが含まれます。
このシグナルに加えて(作成に失敗しても)発せられるQQmlApplicationEngine::objectCreated も参照してください。
この関数は Qt 6.4 で導入されました。
QList<QObject *> QQmlApplicationEngine::rootObjects() const
QQmlApplicationEngine によってインスタンス化されたすべてのルートオブジェクトのリストを返します。 これには、load() またはコンビニエンスコンストラクタによってロードされたオブジェクトのみが含まれます。
注意: Qt 5.9 より前のバージョンでは、この関数は非const
としてマークされています。
[slot, since 6.0]
void QQmlApplicationEngine::setExtraFileSelectors(const QStringList &extraFileSelectors)
ローカルファイルへのURL解決に使われる内部QQmlFileSelector に渡されるextraFileSelectors を設定します。extraFileSelectors は最初のQMLファイルがロードされたときに適用されます。それ以降に設定しても効果はありません。
この関数は Qt 6.0 で導入されました。
QQmlFileSelector とQFileSelector::setExtraSelectorsも参照してください 。
[slot]
void QQmlApplicationEngine::setInitialProperties(const QVariantMap &initialProperties)
QML コンポーネントがロードされた後に初期化されるinitialProperties を設定します。
QQmlApplicationEngine engine; EventDatabase eventDatabase; EventMonitor eventMonitor; engine.setInitialProperties({ { "eventDatabase", QVariant::fromValue(&eventDatabase) }, { "eventMonitor", QVariant::fromValue(&eventMonitor) } });
QQmlComponent::setInitialProperties 、QQmlApplicationEngine::load 、QQmlApplicationEngine::loadDataも参照してください 。
© 2025 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.