このページでは

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モジュールは、ゲームを制御するために使用されます。

両方のモジュールは、ロードされたアイテム間の通信手段として使用されます。

ファイル

画像:

Communication with the loaded itemsも参照

特定の Qt ライセンスの下で利用可能です。
詳細はこちら。