Qt 스타일 시트

Qt 스타일 시트는 위젯의 모양을 사용자 정의할 수 있는 강력한 메커니즘으로, QStyle 을 서브 클래싱하여 이미 가능한 것 외에도 위젯의 모양을 사용자 정의할 수 있습니다. Qt 스타일 시트의 개념, 용어, 구문은 HTML 캐스케이딩 스타일 시트(CSS) 에서 크게 영감을 받았지만 위젯의 세계에 맞게 조정되었습니다.

주제:

참고: QWidget::setFont() 또는 QTreeWidgetItem::setBackground()와 같이 위젯의 모양을 설정하는 함수와 같은 위젯에 Qt 스타일 시트를 사용하는 경우, 설정이 충돌하면 스타일 시트가 우선합니다.

개요

스타일 시트는 QApplication::setStyleSheet()를 사용하여 전체 애플리케이션에 설정하거나 QWidget::setStyleSheet()를 사용하여 특정 위젯(및 그 하위 위젯)에 설정할 수 있는 텍스트 사양입니다. 여러 스타일 시트가 서로 다른 레벨에 설정되어 있는 경우, Qt는 설정된 모든 스타일 시트에서 효과적인 스타일 시트를 도출합니다. 이를 캐스케이딩이라고 합니다.

예를 들어, 다음 스타일 시트는 모든 QLineEdit는 배경색으로 노란색을 사용하고 모든 QCheckBox은 텍스트 색으로 빨간색을 사용하도록 지정합니다:

QLineEdit { background: yellow }
QCheckBox { color: red }

이러한 종류의 사용자 정의의 경우 스타일 시트는 QPalette 보다 훨씬 강력합니다. 예를 들어, 빨간색 푸시 버튼을 얻기 위해 QPushButton 에 대해 QPalette::Button 역할을 빨간색으로 설정하고 싶을 수 있습니다. 하지만 스타일 작성자는 다양한 플랫폼의 가이드라인과 기본 테마 엔진의 제한을 받기 때문에 모든 스타일에 이 방법이 적용된다고 보장할 수는 없습니다(Windows 및 macOS의 경우).

스타일시트를 사용하면 QPalette 만으로는 수행하기 어렵거나 불가능한 모든 종류의 사용자 지정을 수행할 수 있습니다. 필수 필드의 노란색 배경, 잠재적으로 파괴적인 푸시 버튼의 빨간색 텍스트 또는 멋진 체크 박스를 원한다면 스타일 시트가 해답입니다.

스타일 시트는 현재 widget style 위에 적용되므로 애플리케이션이 최대한 네이티브처럼 보이지만 모든 스타일 시트 제약 조건이 고려됩니다. 팔레트 조작과 달리 스타일 시트는 보장을 제공합니다: QPushButton 의 배경색을 빨간색으로 설정하면 모든 플랫폼의 모든 스타일에서 버튼의 배경이 빨간색으로 표시된다는 것을 보장할 수 있습니다. 또한 Qt Widgets Designer 에서는 스타일 시트 통합 기능을 제공하여 스타일 시트의 효과를 다른 widget styles 에서 쉽게 볼 수 있습니다.

또한 스타일시트를 사용하여 QStyle 을 서브클래스화하지 않고도 애플리케이션에 고유한 모양과 느낌을 제공할 수 있습니다. 예를 들어 라디오 버튼과 체크박스에 임의의 이미지를 지정하여 눈에 띄게 만들 수 있습니다. 이 기술을 사용하면 style hint 을 지정하는 것과 같이 일반적으로 여러 스타일 클래스를 서브클래싱해야 하는 사소한 사용자 지정도 수행할 수 있습니다.

스타일 시트가 활성화된 경우 QWidget::style()에서 반환하는 QStyle 은 플랫폼별 스타일이 아닌 래퍼 "스타일 시트" 스타일입니다. 래퍼 스타일은 모든 활성 스타일 시트가 존중되도록 하며 그렇지 않으면 그리기 작업을 기본 플랫폼별 스타일(예: Windows의 QWindowsVistaStyle)로 전달합니다.

Qt 4.5부터 Qt 스타일 시트는 macOS를 완벽하게 지원합니다.

© 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.