Qt クイックサンプル - Window と Screen
この例題ではQMLのWindowとScreenについて説明します。
WindowとScreenは以下の方法を示しています:
- QMLでウィンドウを作成する
- ウィンドウを制御するvisibility
- アプリケーション起動時にスプラッシュ画面を表示する
- ウィンドウのプロパティにアクセスするScreen
また、QMLをリソースとしてパッケージ化し、アイコンを提供することで、 スタンドアロンのQMLデスクトップアプリケーションを作成する方法を示します。
サンプルを実行する
Qt Creator からサンプルを実行するには、Welcome モードを開き、Examples からサンプルを選択します。詳しくは、Building and Running an Example を参照してください。
ウィンドウの実装
スプラッシュ・スクリーンは、Qt.SplashScreen フラグで作成できます。メイン・ウィンドウとの相互作用を防ぐために、ApplicationModal にしてください。スプラッシュ・ウィンドウも透明で、部分的に透明な画像を表示している場合、それは整形されたウィンドウのように見えます。
Window { id: splash color: "transparent" title: "Splash Window" modality: Qt.ApplicationModal flags: Qt.SplashScreen property int timeoutInterval: 2000 signal timeout
この例ではTimer 、自動的にスプラッシュ・スクリーンが解除されますが、実際のアプリケーションでは、初期化が完了したときにアプリケーション・ロジックからのシグナルに接続してスプラッシュを非表示にしたい場合があります。
Timer { interval: splash.timeoutInterval; running: splash.visible; repeat: false onTriggered: splash.exit() }
この例のメイン・ウィンドウはコントロール・ウィンドウで、セカンダリ・ウィンドウの状態をコントロールし、フィードバックするためのボタンとチェックボックスがあります。各チェックボックスには、その状態を表示するプロパティへのバインディングと、状態を変更するonClickedハンドラがあります。これは、バインディングループを避けながら双方向バインディングを作成するための典型的なパターンです。
CheckBox { text: "Windowed" height: showButton.height width: col.cellWidth Binding on checked { value: root.testWindow.visibility === Window.Windowed } onClicked: root.testWindow.visibility = Window.Windowed }
Screen CurrentScreen.qmlには、画面の向きが変わったときにコンテンツを回転させたり、ウィンドウを画面上に配置したり、実単位を論理ピクセル単位に変換したりする必要があるアプリケーションに便利なプロパティがいくつかあります。CurrentScreen.qml(これはwindow.qmlにインラインで表示されるか、qmlツールで単独で実行できる)は単にプロパティ値を表示し、スプラッシュスクリーンはそれらを使ってウィンドウをスクリーンの中央に配置する。
x: (Screen.width - splashImage.width) / 2 y: (Screen.height - splashImage.height) / 2
Window がItem や別の Window の中に入れ子になっている場合、内側の Window は外側の Window のための一時的なものになります(詳しくはWindow を参照してください)。しかし、無関係なピアとして複数のトップレベルウィンドウを作成したい場合は、この例のように、視覚的でないQtObject ルートアイテムの中に作成することができます。
©2024 The Qt Company Ltd. 本書に含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。