Caricamento in foglio di stile globale QT?
-
12-12-2019 - |
Domanda
Come posso caricare un foglio di stile (risorsa in stile .qss) a livello globale con Qt?
Sto cercando di rendere le cose un po 'più efficienti di:
middleIntText -> setStyleSheet("QLineEdit { border: 1px solid gray;
border-radius: 5px;padding: 0 8px;
selection-background-color:darkgray;
height:40px;font-size:15px;}");
.
Ho pensato che il seguente funzionerebbe al caricamento di QLinedit una volta per tutti i widget QLinedit:
file qss:
.
QLineEdit { border: 1px solid gray;
border-radius: 5px;
padding: 0 8px;
selection-background-color:darkgray;
height:40px;
font-size:15px;}
file CPP:
.
QApplication a(argc, argv);
QFile stylesheet("formStyle.qss");
stylesheet.open(QFile::ReadOnly);
QString setSheet = QLatin1String(stylesheet.readAll());
a.setStyleSheet(setSheet);
Forse è giusto e sto facendo qualcos'altro sbagliato?
Soluzione
Hai chiamato qstyle * qapplication :: setstyle (constQString & Style) che richiede un oggetto qstyle per style dal qstylefactory.
Invece, dovresti chiamare Void QApplication :: Setstylesheet(Cost QString & foglio) che imposta il foglio di stile dell'applicazione.
Altri suggerimenti
Il tentativo sopra è la sintassi corretta, ma ci sono motivi per cui potrebbe non funzionare.
Problemi possibili:
- .
-
File di origine (.QSS) non viene recuperato
-
widget superiore errato che viene scelto per applicare cascata.
-
Sintassi del codice .QSS (CSS).
Motivo che ho dovuto fare la mia domanda sopra è che avevo due di questi tre problemi.Ho dovuto prima indicare i file corretti la posizione e il secondo ho dovuto applicare direttamente a QWidget.
.QFile stylesheet("G:/Applications/Projects/ProspectTracker/formStyle.qss"); stylesheet.open(QFile::ReadOnly); QString setSheet = QLatin1String(stylesheet.readAll()); QWidget::setStyleSheet(setSheet);
@bill grazie per la tua assistenza.Ha sottolineato che avevo pubblicato
.setStyle
e non.setStyleSheet
.Il codice campione sopra non riflette più questo, ma se non avessi cambiato quel nulla che ho fatto avrei lavorato.