QQmlApplicationEngine Class
QQmlApplicationEngine は、単一の QML ファイルからアプリケーションをロードする便利な方法を提供します。詳細...
Header: | #include <QQmlApplicationEngine> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Qml) target_link_libraries(mytarget PRIVATE Qt6::Qml) |
qmake: | QT += qml |
Inherits: | 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 に対して直ちに作成されます。リモートの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 シグナルを聞いてください。
エラーが発生した場合、objectCreated シグナルがNULLポインタをパラメータとして発せられ、エラーメッセージは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も参照して ください。
©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。