2017-12-19 5 views
1

ich eine Qt-Schnittstelle mit einem haben:Qt - Hintergrundbild hinter Kind-Widgets

  • QWidget
  • QVBoxLayout
  • QMainLayout
  • QPushButton

Meine Schnittstelle so etwas wie dieses:

BACKGROUND_IMAGE_URL = "D:/image.png" 
w = QWidget() 
w.setStyleSheet("background-image:" + "url(" + BACKGROUND_IMAGE_URL + ");" + "border:0px") 
w.repaint() 
w.show() 

button = QPushButton("btn1") 
button.setStyleSheet("background-color: rgb(255, 255, 255); border:0px") 

verticalLayout = QVBoxLayout() 
verticalLayout.addWidget(button) 
mainLayout = QGridLayout() 
mainLayout.addLayout(verticalLayout, 0, 0, 1, 1) 
w.setLayout(self.mainLayout) 

, d. H. Ein Widget mit einer Schaltfläche. Der Widget-Hintergrund ist ein Bild. Der Hintergrund der Schaltfläche sollte weiß sein, aber aufgrund des Hintergrundbildes des Widgets wird das Button-Stylesheet überhaupt nicht angezeigt.

Ich möchte, dass die Schaltfläche Hintergrund ON TOP des Widget Hintergrundbild gehen. Irgendwelche Gedanken darüber, wie man das macht?

+0

was ist BACKGROUND_IMAGE_URL? – eyllanesc

+0

Was ist, wenn du 'w.show()' nach 'w.setLayout'? –

+0

sehe meine letzte Änderung. nur eine Datei URL – nathanesau

Antwort

2

Das Problem wird verursacht, weil das Hintergrundbild auf alle Widgets angewendet wird, so dass die Farbe der Schaltfläche nicht geändert wird. Eine Lösung ist das Hintergrundbild nur auf das Widget anzuwenden, so verwenden wir die . selector:

w.setStyleSheet(".QWidget{background-image:" + "url(" + BACKGROUND_IMAGE_URL + ");" + "border:0px}") 
Verwandte Themen