このページでは

の初期化QML Runtime

QMLドキュメントは、QML Runtimeによって読み込まれ、実行されます。QML Runtimeは、他のQtモジュールやサードパーティ製のQmlモジュール、および型へのアクセスも提供します。

さらに、Qt フレームワークには、.qml ファイルをロードするツール「qml 」が用意されています。このツールは、QML Runtime をロードするための C++ アプリケーションを記述することなく、QML コードの開発やテストを行う際に役立ちます。

QML を使用するアプリケーションを実行するには、そのアプリケーションから QML Runtime を呼び出す必要があります。QML Runtime を呼び出すには、以下の手順を実行します。

  • Qt C++ アプリケーションを作成します。

    アプリケーションは、以下のいずれかの方法でQQmlEngine を読み込む必要があります。

    • QQuickView インスタンスを介してQMLファイルをロードする。
    • QQmlEngine インスタンスを作成し、QQmlComponent を使用してQMLファイルをロードする。
  • Qt Bridgeアプリケーションを作成します。

    詳細については、Qt Bridgeのドキュメントを参照してください:

  • qml ツールを使用すると、QMLファイルを直接読み込んで実行できます。

    このツールは、QML Runtimeを読み込むためのアプリケーションを作成することなく、QMLコードの開発やテストを行う際に役立ちます。詳細については、「 QML Runtime ツールを使用したプロトタイピング」を参照してください。

C++ アプリケーションでのQML Runtime の初期化

QQuickView を使用した初期化

QQuickView は、QMLファイルをロードできるQWindow ベースのクラスです。たとえば、application.qml というQMLファイルがある場合、次のような記述になります。

import QtQuick

Rectangle { width: 100; height: 100; color: "red" }

Qtアプリケーションのmain.cpp ファイル内で、次のように読み込むことができます:

#include <QGuiApplication>
#include <QQuickView>

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);

    QQuickView view;
    view.setSource(QUrl::fromLocalFile("application.qml"));
    view.show();

    return app.exec();
}

これにより、application.qml の内容を表示するQWindow ベースのビューが作成されます。

ビルドファイル

`find_package() ` コマンドを使用して、Qt6 パッケージ内から必要なモジュールコンポーネントを検索します。

find_package(Qt6 REQUIRED COMPONENTS Quick)
target_link_libraries(mytarget PRIVATE Qt6::Quick)

詳細については、「CMake を使用したビルド」の概要を参照してください。

qmake を使用してモジュールをビルドするように設定するには、プロジェクトの .pro ファイル内で、QT 変数の値としてそのモジュールを追加します:

QT += quick

詳細については、「プロジェクトファイルの作成」を参照してください。

QQmlEngineを直接作成する

application.qml にグラフィカルコンポーネントが含まれていない場合、またはその他の理由でQQuickView の使用を避けたい場合は、代わりにQQmlEngine を直接構築することができます。この場合、application.qml はビューに配置されるのではなく、QQmlComponent のインスタンスとして読み込まれます:

#include <QGuiApplication>
#include <QQmlEngine>
#include <QQmlContext>
#include <QQmlComponent>

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);

    QQmlEngine engine;
    QQmlContext *objectContext = new QQmlContext(engine.rootContext());

    QQmlComponent component(&engine, "application.qml");
    QObject *object = component.create(objectContext);

    // ... delete object and objectContext when necessary

    return app.exec();
}

Qt Quick のグラフィカルなアイテムを一切使用しない場合は、上記のコードでQGuiApplication をQCoreApplication に置き換えることができます。これにより、 Qt GUI モジュールへの依存関係なしにQMLを言語として使用できます。

© 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.