Qt Widgets 기반의 응용프로그램을 개발할 때 Qt 스타일 시트를 작성하여 스타일을 사용자 정의할 수 있다. Qt 스타일 시트는 QStyle
을 서브클래싱하여 위젯의 모양을 사용자 정의할 수 있는 강력한 메커니즘이다.
다음의 간단한 예제는 응용 프로그램에서 모든 QLineEdit
의 배경색을 노란색으로 설정한다.
qApp->setStyleSheet("QLineEdit { background-color: yellow }");
특정 대화 상자의 자식(또는 손자 또는 손자들)인 QLineEdit
에만 속성을 적용하려면 다음과 같이 한다.
myDialog->setStyleSheet("QLineEdit { background-color: yellow }");
Qt 스타일 시트의 구문 규칙이 CSS와 거의 동일하기 때문에 이미 CSS를 알고 있다면 빠르게 작성할 수 있겠지만 처음이라면 어려울 수 있다. 하지만 누군가가 이미 작성해서 공개한 Qt-Material 를 사용하면 쉽게 Dark테마 와 Material 디자인 스타일로 바꿀 수 있다. 다음은 런타임에 동적으로 스타일을 바꾸는 것을 보여 준다.
다음과 같이 런타임중에 stylesheet 파일을 읽어 바꿀 수 있다.
...
QFile f(":resource/theme/style.qss");
if (!f.exists()) {
printf("Unable to set stylesheet, file not found\n");
}
else {
f.open(QFile::ReadOnly | QFile::Text);
QTextStream ts(&f);
qApp->setStyleSheet(ts.readAll());
}
...
https://github.com/UN-GCPDS/qt-material
https://github.com/ColinDuquesnoy/QDarkStyleSheet