C
Qt Quick ウルトラライトローダー 使用例
Loader QML タイプの使い方を示します。
概要
loader サンプルは、Loader QML タイプの使い方を示しています。
この例では、簡単な記憶ゲームを実装しています。プレイヤーは画面に表示された順番通りに色を選択しなければなりません。プレーヤーが間違った色を選択するとゲームは終了します。順番の最後の色が選択されると、ベストスコアが更新され、新しいラウンドが始まります。
アプリケーションのUI
アプリケーションは3つのページで構成されています:
- ロゴ
- メモリーゲーム
- 設定
アプリケーションのメイン・ビューはローダーとして実装されており、RAMに保存されるページは1つだけです。
それぞれのボタンが押されるたびに、ローダーのソースは対応するページのソースに変更されます。
Loader { id: mainView anchors.fill: parent source: "Logo.qml" Connections { target: root function onCurrentPageChanged(currentPage: int) { if (currentPage === 0) { mainView.source = "memory_game/MemoryGame.qml" } else if (currentPage === 1) { mainView.source = "settings/Settings.qml" GameState.running = false } } } }
ロゴページ
ロゴページは紹介画像を表示します。アプリケーションの開始時に一度だけ表示されます。

メモリーゲームページ
メモリーゲームはディスプレイとコントロールの2つの部分に分かれています。ディスプレイはラウンドの最初に表示され、プレイヤーが覚えなければならない色を表示します。
ディスプレイには統計、現在のスコア、ベストスコアも表示されます。
コントロールは色のついたボタンが並んでおり、正しい順番でクリックします。
Rectangle { id: root color: SettingsData.backgroundColor Item { id: positioningWrapper anchors { fill: parent; leftMargin: parent.width/10; rightMargin: parent.width/10; } GameWindow { anchors { left: parent.left; top: parent.top; right: parent.right; bottom: gameControls.top } } ColorButtons { id: gameControls anchors { bottom: parent.bottom; horizontalCenter: parent.horizontalCenter } width: parent.width height: width * 0.2 } StatsOverlay { anchors { left: parent.left; right: parent.right; } } } }

設定ページ
設定ページでは、ユーザーがアプリケーションの背景色を調整したり、ゲームの難易度を変更したりできます。

プロジェクト構成
メインアプリケーション
メインアプリケーションウィンドウはloader.qml
メモリーゲーム
ゲームUIは、loader/memory_game ディレクトリにあるQMLファイルで定義されます。
モジュール
ローダーの例では、2つのモジュールを定義しています:
- SettingsData
- GameState
SettingsDataモジュールは、背景色や難易度などのアプリケーション設定を保存する。
GameStateモジュールは、ゲームを制御するために使用されます。
両方のモジュールは、ロードされたアイテム間の通信手段として使用されます。
ファイル
- loader/CMakeLists.txt
- loader/Logo.qml
- loader/PageButton.qml
- loader/loader.qml
- loader/mcu_loader.qmlproject
- loader/memory_game/ColorButtons.qml
- loader/memory_game/ColorsQueue.cpp
- loader/memory_game/ColorsQueue.h
- loader/memory_game/GameMain.qml
- loader/memory_game/GameOver.qml
- loader/memory_game/GameState.qml
- loader/memory_game/GameStateModule.qmlproject
- loader/memory_game/GameWindow.qml
- loader/memory_game/MemoryGame.qml
- loader/memory_game/StatsOverlay.qml
- loader/settings/ColorSelector.qml
- loader/settings/DifficultySelector.qml
- loader/settings/Settings.qml
- loader/settings/SettingsData.qml
- loader/settings/SettingsDataModule.qmlproject
画像:
Communication with the loaded itemsも参照 。
特定の Qt ライセンスの下で利用可能です。
詳細はこちら。