Impostazione del foglio di stile in background su Qwidget show su tutti i controlli
Domanda
Ho impostato i seguenti CSS sul foglio di stile Qwidget:
QWidget { background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #00b7ea, stop: 1 #009ec3); /* Chrome10+,Safari5.1+ */ }
Funziona bene, ma quando metto un pulsante o qualsiasi altro controllo sulla tela, ottengo lo stesso colore di sfondo incluso negli elementi.
Qualcuno può aiutarmi a risolverlo.
Ho provato a usare un QFRAME ma ho sempre un bordo attorno al telaio in questo modo:
Soluzione
Quando si imposta un foglio di stile per un QWidget
, il foglio di stile è applicato a questo QWidget
e l'intera gerarchia infantile di quel widget. Dato che stai usando QWidget
Come selettore, lo stile verrà applicato a qualsiasi QWidget
o QWidget
sottoclasse. UN QPushButton
è una sottoclasse di QWidget
, quindi la regola dello stile viene applicata ad essa.
Esistono molti modi in cui potresti individuare solo il Qwidget principale con un selettore. In questo caso, potrebbe essere più semplice solo da usare .QWidget
che prenderà di mira solo QWidget
s e no QWidget
sottoclassi.
Se finisci per avere altri QWidget
s nella gerarchia dei bambini, puoi essere più selettivo identificando la classe e objectName
Proprietà utilizzando Classname#objectName
.
Dovresti leggere questa sezione dei documenti QT per maggiori informazioni.