このページでは

Qt Quick 例 - ウィンドウとスクリーン

この例では、QMLにおける「Window」および「Screen」のタイプについて説明します。

表示設定ボタンや画面プロパティを備えたコントロールウィンドウと、サブのテストウィンドウ

「Window」と「Screen」では、以下の方法を説明します:

  • QMLでウィンドウを作成する方法
  • その制御visibility
  • アプリケーションの起動時にスプラッシュスクリーンを表示する
  • そのプロパティへのアクセスScreen

また、QMLをリソースにパッケージ化し、アイコンを指定して、スタンドアロンのQMLデスクトップアプリケーションを作成する方法も紹介しています。

例の動作

以下の手順でサンプルを実行できます。

ウィンドウの実装

スプラッシュ画面は `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(window.qml内でインライン表示されるほか、qmlツールを使用して単独で実行することも可能)は単にプロパティの値を表示するだけですが、スプラッシュスクリーンはこれらを利用してウィンドウを画面の中央に配置しています。

    x: (Screen.width - splashImage.width) / 2
    y: (Screen.height - splashImage.height) / 2

Window がItem や別のWindow内にネストされている場合、内側のウィンドウは外側のウィンドウに対して一過性(transient)となります(詳細についてはWindow を参照してください)。しかし、相互に関連のない同等のウィンドウとして複数のトップレベルウィンドウを作成したい場合は、この例のように、非ビジュアルのQtObject ルートアイテム内にそれらを作成することができます。

サンプルプロジェクト @ code.qt.io

© 2026 The Qt Company Ltd. 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.