2011-01-26 11 views
8

Nel mio widget di, posso fare qualcosa di simile:QT: setStyleSheet da un file QSS risorsa?

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

Questo imposterà il widget sfondo rosso.

Ho un file QSS nelle mie risorse. Come faccio a istruire il mio widget a prendere il suo contenuto del foglio di stile da lì, vs solo prendendo la sintassi qss come parametro?

risposta

13

Ottenuto: è necessario "leggere il file" dalle risorse, convertirlo in QString e alimentarlo nel setStyleSheet. Es .:

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

Ma non dimenticare di chiamare ensurePolished() altrimenti il ​​nuovo foglio di stile potrebbe non essere applicato. – bkausbk

+2

per cosa è garantitoPolished? – user1767754

13

In alternativa alla fissazione di un foglio di stile per ogni widget, si può solo caricare e impostare un foglio di stile per l'intera applicazione. Qualcosa di simile a questo:

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); 

In questo caso tutti i widget vi verrà a prendere i loro stili dalla data foglio di stile automaticamente.