2011-01-26 7 views
8

, 나는 그런 식으로 뭔가를 할 수 있습니다QT : 리소스 QSS 파일의 setStyleSheet? 내 위젯에서

MyWindow::MyWindow(QWidget *parent) : 
    QWidget(parent) 
{ 
    ui.setupUi(this); 
    setStyleSheet("QWidget { background-color: red }"); // <--- HERE 
} 

이 위젯 배경을 빨간색으로 설정합니다.

리소스에 QSS 파일이 있습니다. 위젯이 qss 구문을 매개 변수로 사용하는 것부터 스타일 시트 내용을 가져 오도록 지시하려면 어떻게해야합니까?

답변

13

사실 : 리소스에서 파일을 읽고 QString으로 변환 한 다음 setStyleSheet로 가져와야합니다. 예컨대 : 각 위젯의 스타일 시트를 설정하는 대신

QFile file(":/qss/default.qss"); 
file.open(QFile::ReadOnly); 
QString styleSheet = QLatin1String(file.readAll()); 
setStyleSheet(styleSheet); 
+2

그러나 반드시 ensurePolished()를 호출해야합니다. 그렇지 않으면 새 스타일 시트가 적용되지 않을 수 있습니다. – bkausbk

+2

무엇이 보장되어 있습니까? – user1767754

13

, 당신은 단지로드하고 전체 응용 프로그램의 스타일을 설정할 수 있습니다. 다음과 같은 것 :

QApplication app(argc, argv); 

// Load an application style 
QFile styleFile(":/style.qss"); 
styleFile.open(QFile::ReadOnly); 

// Apply the loaded stylesheet 
QString style(styleFile.readAll()); 
app.setStyleSheet(style); 

이 경우 모든 위젯은 지정된 스타일 시트에서 자동으로 스타일을 선택합니다.

관련 문제