チュートリアル:Qt Quick アプリケーション
このチュートリアルでは、 Qt Quickについて解説します。Qt Quick モジュールを使用すると、QMLで滑らかなアニメーションを備えたユーザーインターフェースを構築し、それらをバックエンドのC++ライブラリに接続することができます。
Qt Quick モジュールは、QMLでユーザーインターフェースを作成するために必要なすべての基本型を提供します。このモジュールはビジュアルキャンバスを提供し、ビジュアルコンポーネントの作成やアニメーション、ユーザー入力の受信などを行うための型が含まれています。利用可能なUIの選択肢に関する詳細については、「ユーザーインターフェース」を参照してください。
このチュートリアルでは、New Project ウィザードによって生成されるサンプルアプリケーションについて説明します。このアプリケーションは、 Qt Quick、 Qt Quick Controls、およびQt Quick LayoutsモジュールからQML型をインポートします。また、CMakeビルド構成システムを使用してアプリケーションをビルドおよび実行するためのメインのC++ソースファイルも作成します。
編集モードを使用して、QML コード、C++ コード、およびプロジェクトの CMake ビルド設定を確認します。その後、Android または iOS デバイス上でアプリケーションを実行します。
Qt Quick アプリケーション" src="images/qtquick-tutorial.webp" title="新しいプロジェクトウィザードを使用して作成した Qt Quick アプリケーション"/>
その他の例については、「Qt Quick の例とチュートリアル」を参照してください。
開発環境のセットアップ
モバイルデバイス向けにアプリケーションをビルドして実行するには、そのデバイスプラットフォーム用の開発環境をセットアップし、Qt Creator とモバイルデバイス間の接続を設定する必要があります。
Android デバイス向けの開発を行うには、「Android 向け開発」の手順に従って、Qt for Androidをインストールし、開発環境を設定する必要があります。
iOS デバイス向けの開発を行うには、Qt for iOS をインストールする必要があります。また、Xcode をインストールし、それを使用してデバイスを設定する必要があります。そのためには、Apple から発行される Apple 開発者アカウントと iOS Developer Program 証明書が必要です。詳細については、「iOS 向け開発」を参照してください。
プロジェクトの作成
- 「File 」>「New Project 」>「Application (Qt) 」> Qt Quick Application」に進みます。

- 「Choose 」を選択して、「Project Location 」ダイアログを開きます。
- 「Name 」で、アプリケーションの名前を入力します。プロジェクトに名前を付ける際は、後で簡単に名前を変更できないことに注意してください。
- 「Create in 」で、プロジェクトファイルのパスを入力します。プロジェクトフォルダは後で問題なく移動できます。
- 「Next 」を選択して、「Define Project Details 」ダイアログを開きます。

- 「Next 」を選択して、「Kit Selection 」ダイアログを開きます。
- アプリケーションをビルドする対象となるプラットフォームのキットを選択します。モバイルデバイス向けのアプリケーションをビルドするには、Android および iOS のキットも選択してください。
- 「Next 」を選択して、「Project Management 」ダイアログを開きます。
- プロジェクト設定を確認し、[Finish ](macOS の場合は [Done ])を選択してプロジェクトを作成します。
Qt Creator これにより、コンポーネントファイル「Main.qml 」が生成され、Edit モードで開かれます。
アプリケーションのプレビュー
アプリケーションのメインビューには、背景色、テキスト、およびボタンが付いた2つの矩形が表示されます。ボタンを選択すると、アプリケーションのライトモードとダークモードが切り替わります。
- アプリケーションをプレビューするには、上部のツールバーで「
」を選択します。 - デスクトップ上でアプリケーションを実行するには、[
] を選択します。
QMLコードを確認する
Main.qml を開いて、生成された QML コードを確認します。
QMLのインポート
このファイルには、アプリケーションで使用される Qml 型を含む Qt Qml モジュールに対する import 文が含まれています:
import QtQuick import QtQuick.Layouts import QtQuick.Controls.Basics
メインウィンドウ
このファイルには、メインウィンドウを作成するApplicationWindow QML 型のインスタンスが含まれています。ウィンドウのプロパティでは、初期サイズと最小サイズ、およびウィンドウのタイトルが設定されています。また、ウィンドウが画面上に表示されるように設定されています。
ApplicationWindow {
id: window
width: 640
height: 480
minimumWidth: 200
minimumHeight: 250
visible: true
title: qsTr("Hello World")
property bool lightMode: Application.styleHints.colorScheme === Qt.Light
property color reallyDark: "#1f1f1f"
property color dark: "#262626"
property color reallyLight: "#e7e7e7"
property color light: "#e0e0e0"カスタムプロパティでは、ライトモードおよびダークモードにおけるアプリケーションの色を設定しています。
レイアウト
このウィンドウには、Qt Quick Layouts モジュールに属するGridLayout というQML型のインスタンスが含まれており、これによりRectangle型の2つのインスタンスがグリッド上に配置されます。グリッドのプロパティでは、列の幅や行と列の間隔が設定されるほか、グリッドのサイズがウィンドウのサイズに連動するように設定されています。
GridLayout {
id: grid
columns: width < 400 ? 1 : 2
rowSpacing: 0
columnSpacing: 0
anchors.fill: parent実行中のアプリケーションで列幅が400ピクセル未満になると、矩形は1列に配置されます。

基本的な QML 型
Rectangle 型の各インスタンスには、タイプ ID と色を設定するプロパティがあります。矩形の色は、現在のモードにおけるウィンドウの色にバインドされています。Layoutプロパティにより、矩形がグリッドセルに収まるように調整されます。
Rectangle {
id: rectangle1
color: window.lightMode ? window.reallyLight : window.reallyDark
Layout.fillHeight: true
Layout.fillWidth: true両方の矩形にはColumnLayout が含まれており、Qt Quick Controls モジュールのLabel およびButton 型のインスタンスを配置しています。
ColumnLayout {
anchors.fill: parent
Layout.alignment: Qt.AlignHCenter | Qt.AlignTop「レイアウト」プロパティにより、列は矩形の上部中央に配置され、テキストとボタンを配置するためにレイアウトの上部および下部の余白が設定されます。
プロパティの変更
アプリケーションをプレビューすると、コード内のプロパティの値を変更して、その変更を即座に確認することができます。
色、余白、配置を変更して、さまざまな表示を確認してみてください。
Qt Quick Controls
Qt Quick Controls モジュールは、Qt Quick で完全なユーザーインターフェースを構築するための一連のコントロールを提供します。このアプリケーションには、LabelおよびButtonコントロールのインスタンスが含まれています。
Label
Label のプロパティでは、見出しテキスト、その色、およびピクセル単位のサイズを設定します。また、要素の幅と高さ内でラベルテキストを水平方向および垂直方向に中央揃えにし、列幅が変更された際にラベル内のテキストが収まるようにフォントサイズを調整します。
Layoutプロパティにより、ラベルは16ピクセルの余白を保ちながらグリッドセルに収まるようになります。
Label {
id: text1
color: window.lightMode ? window.dark : window.light
font.pixelSize: 120
fontSizeMode: Text.Fit
text: qsTr("Hello World")
Layout.fillWidth: true
Layout.fillHeight: true
Layout.margins: 16
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
}Button
Button text プロパティは、ウィンドウモードに応じてボタンのアイコンとテキストを設定します。
Layout プロパティは、ボタンを長方形の底辺の中央に配置し、ボタンを配置するためのレイアウトの下マージンを設定します。
Button {
id: button1
text: window.lightMode ? qsTr("\u263D Dark mode")
: qsTr("\u263C Light mode")
Layout.bottomMargin: 16
Layout.alignment: Qt.AlignHCenter | Qt.AlignBottom
...
}Text プロパティは、ボタンのテキスト、色、フォントをウィンドウモードに紐付けます。
...
contentItem: Text {
text: button1.text
color: window.lightMode ? window.light : window.dark
font: button1.font
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
}background 項目は、Rectangle 型のインスタンスを保持しています。矩形のプロパティにより、ボタンの角が丸くなり、ウィンドウモードに応じてボタンの背景色が設定されます。
...
background: Rectangle {
implicitWidth: 120
implicitHeight: 36
radius: 8
color: window.lightMode ? window.dark : window.light
}
...
}スタイルの変更
このサンプルアプリケーションでは、Qt Quick Controls に「Basic」スタイルを使用しています。これは、シンプルで軽量な汎用スタイルであり、最高のパフォーマンスを発揮します。
iOS、macOS、Android用のMaterialなど、ターゲットプラットフォームに応じて選択できるスタイルが他にもいくつかあります。さまざまなスタイルを試すには、import QtQuick.Controls にスタイル名を追加します。例:import QtQuick.Controls.Material 。
Qt XML 6.12 以降では、QtQuick.Controls.Native をインポートできるようになり、これによりターゲットプラットフォームのデフォルトスタイルがインポートされます。
利用可能なスタイルの詳細については、「 Qt Quick Controls のスタイル設定」を参照してください。
シグナルとシグナルハンドラ
Button 型のonClicked シグナルハンドラは、ボタンのクリックに応答します。サンプルアプリケーションでは、このボタンを選択すると、ライトモードとダークモードが切り替わります。
Button {
id: button1
text: window.lightMode ? qsTr("\u263D Dark mode")
: qsTr("\u263C Light mode")
Layout.bottomMargin: 16
Layout.alignment: Qt.AlignHCenter | Qt.AlignBottom
contentItem: Text {
text: button1.text
color: window.lightMode ? window.light : window.dark
font: button1.font
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
}
background: Rectangle {
implicitWidth: 120
implicitHeight: 36
radius: 8
color: window.lightMode ? window.dark : window.light
}
onClicked: window.lightMode = !window.lightMode
}
}
}
}C++ ソースコードの確認
main.cpp ファイルを開いて、生成された C++ コードを確認してください。このファイルでは、アプリケーション `app` とアプリケーションエンジン `engine` が宣言されています。アプリケーションの実行時に、エンジンはメインの QML ファイルをロードします。
#include <QGuiApplication> #include <QQmlApplicationEngine> int main(int argc, char *argv[]) { QGuiApplication app(argc, argv); QQmlApplicationEngine engine; QObject::connect( &engine, &QQmlApplicationEngine::objectCreationFailed, &app, []() { QCoreApplication::exit(-1); }, Qt::QueuedConnection); engine.loadFromModule("HelloWorld", "Main"); return QGuiApplication::exec(); }
CMake設定ファイルを確認する
ウィザードは、アプリケーションをビルドするためのCMakeLists.txt 設定ファイルを生成します。
RESOURCES セクションには、アプリケーションのソースファイルがリストされています。プロジェクトにソースファイルを追加すると、Qt Creator が自動的にそれらをこのセクションに追加します。
詳細については、「CMake を使用したビルド」を参照してください。
デバイス上でアプリケーションを実行する
これで、アプリケーションをデバイスにデプロイして実行できるようになります:
- Android デバイスではUSB デバッグを、iOS デバイスでは開発者モードを有効にします。
- デバイスを開発用PCに接続します。
- Projects にアクセスし、プロジェクトに適したキットを有効にします。
- Preferences > [Kits ] > [Kits] に移動し、[Run device] および [Device] のリストからデバイスを選択します。
- デバイス上でアプリケーションを実行するには、Ctrl+R を選択します。
「プロジェクトのキットを有効にする」、「Android へのアプリケーションのデプロイ」、「CMake を使用したビルド方法」、 「Qt Quick UI の設計方法」、「 Qt Quick UI デザイン 」、 「Qt Quick UI の設計」、および「 Qt Quick でのプログラミング入門:アラームアプリケーション 」も参照してください 。
Copyright © The Qt Company Ltd. and other contributors. 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.