Scrivo codice Qt5 per principianti su OSX Mavericks e desidero sovrascrivere solo una proprietà: coppia di valori di StyleSheet per un determinato widget.Come eseguire l'override di una sola proprietà: coppia di valori in Qt StyleSheet
Se corro il seguente codice dimostrativo autosufficiente:
#include <QApplication>
#include <QMainWindow>
#include <QtGui>
#include <QPushButton>
int
main(int argc, char *argv[]) {
QApplication app(argc, argv);
QMainWindow* mw = new QMainWindow();
QPushButton* AButton = new QPushButton("A Button", mw);
mw->show();
return app.exec();
}
ottengo un bel pulsante con Macintosh default stile - angoli arrotondati, di colore blu-OSX standard quando premuto, ecc .:
Se però ho impostato il foglio di stile per rendere il colore pulsante di sfondo rosso, sembra perdo tutte le altre impostazioni predefinite OSX stile nel processo - senza angoli più arrotondati, i margini standard, ecc .:
#include <QApplication>
#include <QMainWindow>
#include <QtGui>
#include <QPushButton>
int
main(int argc, char *argv[]) {
QApplication app(argc, argv);
QMainWindow* mw = new QMainWindow();
QPushButton* AButton = new QPushButton("A Button", mw);
AButton->setStyleSheet("QPushButton { background-color: red; }");
mw->show();
return app.exec();
}
Ecco il risultato:
Come posso sostituire solo una proprietà: coppia di valori, preservando il resto degli elementi di stile per il widget, ad esempio, nell'esempio precedente, il colore dello sfondo diventa rosso ma mantenere tutti gli arrotondamenti dei bordi, i margini ecc. lo stesso?
Grazie molto
Si potrebbe provare ad aggiungere il nuovo stile a quello esistente con 'AButton-> setStyleSheet (AButton-> styleSheet() +" ... ");' – leemes
Grazie, tuttavia, sembra ancora di ignorare tutta l'altra piattaforma impostazioni predefinite (ho usato 'AButton-> setStyleSheet (AButton-> styleSheet() +" QPushButton {background-color: red;} ");') – lcikgl
Ah wait ... Ciò di cui stai parlando non sono attributi di stile CSS che ottengono sovrascritto, ma lo * stile di sistema * Il motore di stile di QtWidget tenta di imitare. Non può simulare lo stile del sistema quando si specificano manualmente alcuni attributi, AFAIK, e si riduce a un "vecchio stile di Windows" quando il motore di stile non riesce ad adattare l'attributo CSS specificato. Prova invece a usare le tavolozze. Date un'occhiata a 'QWidget :: setPalette()' e 'palette()', quindi provate a impostare i colori per alcuni ruoli (giocare attorno al quale si usano gli sfondi dei pulsanti, non me lo ricordo). Questo sarà quindi considerato dal motore di stile. – leemes