このページでは

チュートリアル:Qt Quick アプリケーション

Edit モードでQt Quick アプリケーションを作成する方法。

このチュートリアルでは Qt Quick.UI の選択肢の詳細については、ユーザーインターフェースを参照してください。

このチュートリアルでは、Qt の最小バージョンとして Qt 6 を使用し、ビルドシステムとして CMake を使用する場合に、Qt Creator を使用してステートと トランジションを実装する方法を説明します。

このチュートリアルでは、編集モードを使って、3 つの矩形を選択するとその間を Qt ロゴが移動するアプリケーションを作成します。

その他の例については、Qt Quick Examples and Tutorials を参照してください。

Qt Design Studio では、ビジュアルエディタを使ってQt Quick アプリケーションを開発することができます。詳細については、Qt Design Studio ドキュメントを参照してください。

プロジェクトの作成

  1. File >New Project >Application (Qt) > にアクセスする。 Qt Quick Application.

    新規プロジェクトダイアログ

  2. Choose を選択して、Project Location ダイアログを開きます。
  3. Name に、アプリケーションの名前を入力します。自分のプロジェクトに名前を付ける場合、後で簡単に名前を変更できないことに注意してください。
  4. Create in に、プロジェクトファイルのパスを入力します。後でプロジェクトフォルダを移動しても問題ありません。
  5. Next を選択すると、Define Project Details ダイアログが開きます。

    プロジェクトの詳細定義ダイアログ

  6. Kit Selection ダイアログを開くには、Next を選択します。
  7. アプリケーションをビルドするプラットフォームの Qt 6.5 以降のキットを選択します。モバイルデバイス用のアプリケーションを構築するには、Android と iOS 用のキットも選択します。

    注: リストには、Preferences>Kits で指定したキットが表示されます。詳細については、キットの追加と キットを参照してください。

  8. Next を選択して、Project Management ダイアログを開きます。
  9. プロジェクト設定を確認し、Finish (macOS の場合はDone ) を選択してプロジェクトを作成します。

Qt Creator コンポーネント・ファイルMain.qml を生成し、Edit モードで開きます。

アプリケーションのデプロイ

アプリケーションのメインビューには、ビューの左上隅の長方形の中に Qt ロゴが表示され、2 つの空の長方形が表示されます。

アプリケーションの実行時に画像を表示するには、ウィザードが作成したCMakeLists.txt ファイルのRESOURCES セクションでリソースとして指定する必要があります:

qt_add_qml_module(apptransitions
    URI transitions
    VERSION 1.0
    QML_FILES Main.qml Page.qml
    RESOURCES qt-logo.png
)

カスタムQMLタイプの作成

Window QMLタイプでは子コンポーネントに状態を追加する必要があるため、ウィザードを使用してMain.qml から参照するPageというカスタムQMLタイプを作成してください。

カスタムQMLタイプを作成するには

  1. File >New File に進みます。
  2. Qt > を選択します。 QML File (Qt Quick 2).
  3. Choose を選択し、Location ダイアログを開きます。
  4. File name に、カスタム QML タイプの名前を入力します:Page と入力します。
  5. Next を選択し、Project Management ダイアログを開きます。
  6. Finish を選択してPage.qml を作成します。

Qt CreatorEdit モードでPage.qml を開きます。Item というタイプのルート・アイテムがあります。これをRectangle タイプに置き換えます。このタイプに IDpage を与え、四方を親アイテムにアンカーし、色を白に設定します:

import QtQuick

Rectangle {
    id: page
    anchors.fill: parent
    color: "#ffffff"

QMLの型名を入力し始めると、Qt Creatorコードを完成させるために利用可能な型とプロパティが表示されます。

型名の隣にある電球アイコン(電球アイコン )を選択すると、色、透明度、グラデーションなど、矩形のプロパティを指定するためのツールバーが開きます。

矩形用の Qt Quick ツールバー

次に、qt-logo.png をソースとする画像タイプを追加します。他の画像やコンポーネントを使うこともできます。画像を矩形の左上隅に配置します:

    Image {
        id: icon
        x: 20
        y: 20
        source: "qt-logo.png"
    }

画像用のツールバーを使って、ソースファイルや塗りつぶしモードなどの画像プロパティを指定します。

Qt Quick ツールバーの画像にロゴを表示する

次に、画像が移動する矩形を作成します。大きさは画像の大きさに合わせ、透明にして画像が見えるようにします。矩形が見えるように、境界線の色をライトグレーに設定します:

    Rectangle {
        id: topLeftRect
        width: 55
        height: 41
        color: "#00ffffff"
        border.color: "#808080"

矩形を親矩形の左上と左下、および右端の垂直中央に配置するために、矩形を親矩形にアンカーします。次のコード・スニペットは、矩形を親の左上隅にアンカーします:

        anchors.left: parent.left
        anchors.top: parent.top
        anchors.leftMargin: 20
        anchors.topMargin: 20

矩形をユーザーがクリックできるように、MouseArea タイプを追加します:

        MouseArea {
            id: mouseArea
            anchors.fill: parent

あなたのコードをチェックするには、Page.qml サンプルファイルと比較してください。

次に、ステートを追加し、マウスのクリックをステートの変更に接続することによって、ユーザーが矩形をクリックしたときに画像が矩形の間を移動するようにします。

マウスのクリックを状態の変化につなげる

ユーザーが矩形を選択したときに、画像が矩形の間を移動するようにするには、ページ・コンポーネントに状態を追加して、アイコンの xy プロパティの値を、右中と左上の矩形の値と一致するように変更します。異なるサイズのスクリーンでビューが拡大縮小されても画像が矩形内に留まるようにするには、iconの xy プロパティの値を矩形の値にバインドします:

    ...
    states: [
        State {
            name: "State1"
        },
        State {
            name: "State2"

            PropertyChanges {
                target: icon
                x: middleRightRect.x
                y: middleRightRect.y
            }
        },
        State {
            name: "State3"

            PropertyChanges {
                target: icon
                x: bottomLeftRect.x
                y: bottomLeftRect.y
            }
        }
    ]

次に、マウス領域のonClicked シグナルを状態の変化に接続します:

            Connections {
                target: mouseArea
                function onClicked()
                {
                    page.state = "State1"
                }

Qt 6 で開発するため、接続は関数として指定する必要があります。

メインビューにページを追加する

Main.qml を編集用に開き、Page カスタムコンポーネントのインスタンスを追加します:

import QtQuick

Window {
    width: 640
    height: 480
    visible: true
    title: qsTr("Transitions")

    Page {
        id: page
        anchors.fill: parent
    }
}

Ctrl+R を選択してアプリケーションを実行し、矩形を選択して Qt ロゴを矩形から別の矩形に移動します。

トランジションのアニメーション

トランジションを作成して、画像にアニメーションを適用します。例えば、middleRightRectに移動すると画像は跳ね返り、bottomLeftRect に移動するとイージングします。

それぞれの状態から他の2つの状態に切り替えるトランジションを指定します:

    transitions: [
        Transition {
            id: toState1
            ParallelAnimation {
                SequentialAnimation {
                    PauseAnimation {
                        duration: 0
                    }

                    PropertyAnimation {
                        target: icon
                        property: "y"
                        duration: 200
                    }
                }

                SequentialAnimation {
                    PauseAnimation {
                        duration: 0
                    }

                    PropertyAnimation {
                        target: icon
                        property: "x"
                        duration: 200
                    }
                }
            }
            to: "State1"
            from: "State2,State3"
        },

State2への遷移のイージングカーブタイプをlinearからEasing.OutBounce に変更し、バウンスエフェクトを作成します:

        Transition {
            id: toState2
            ParallelAnimation {
                SequentialAnimation {
                    PauseAnimation {
                        duration: 0
                    }

                    PropertyAnimation {
                        target: icon
                        property: "y"
                        easing.type: Easing.OutBounce
                        duration: 1006
                    }
                }

                SequentialAnimation {
                    PauseAnimation {
                        duration: 0
                    }

                    PropertyAnimation {
                        target: icon
                        property: "x"
                        easing.type: Easing.OutBounce
                        duration: 1006
                    }
                }
            }
            to: "State2"
            from: "State1,State3"
        },

注: アニメーション用のツールバーを使用して、イージングカーブのタイプとアニメーション時間を指定します。

アニメーション用Qt Quickツールバー

次に、State2への遷移のイージングカーブのタイプをlinearからEasing.InOutQuad に変更して、イージングエフェクトを作成します:

        Transition {
            id: toState3
            ParallelAnimation {
                SequentialAnimation {
                    PauseAnimation {
                        duration: 0
                    }

                    PropertyAnimation {
                        target: icon
                        property: "y"
                        easing.type: Easing.InOutQuad
                        duration: 2000
                    }
                }

                SequentialAnimation {
                    PauseAnimation {
                        duration: 0
                    }

                    PropertyAnimation {
                        target: icon
                        property: "x"
                        easing.type: Easing.InOutQuad
                        duration: 2000
                    }
                }
            }
            to: "State3"
            from: "State1,State2"
        }
    ]
}

Ctrl+Rを選択してアプリケーションを実行し、矩形を選択してアニメーション化されたトランジションを表示します。

ファイル

画像

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.