Impostazione del foglio di stile in background su Qwidget show su tutti i controlli

StackOverflow https://stackoverflow.com/questions/7375730

  •  28-10-2019
  •  | 
  •  

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.

enter image description here

Qualcuno può aiutarmi a risolverlo.

Ho provato a usare un QFRAME ma ho sempre un bordo attorno al telaio in questo modo:

enter image description here

È stato utile?

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 QWidgets e no QWidget sottoclassi.

Se finisci per avere altri QWidgets 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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top