Qt Quick 예제 - 창 및 화면
이 예제에서는 QML의 창 및 화면 유형을 보여줍니다.
창과 화면은
- QML에서 창을 만들고
- 제어하고 visibility
- 애플리케이션 시작 시 스플래시 화면 표시
- 의 속성에 액세스하는 방법을 보여줍니다. Screen
또한 QML을 리소스로 패키징하고 아이콘을 제공하여 독립형 QML 데스크톱 애플리케이션을 만드는 방법도 보여줍니다.
예제 실행하기
에서 예제를 실행하려면 Qt Creator에서 Welcome 모드를 열고 Examples 에서 예제를 선택합니다. 자세한 내용은 예제 빌드 및 실행하기를 참조하세요.
창 구현
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 참조). 그러나 여러 개의 최상위 창을 서로 관련이 없는 피어로 만들려면 이 예제처럼 시각적이지 않은 QtObject 루트 항목 안에 만들 수 있습니다.
© 2025 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.