Qt - 子部件背后的背景图像

Qt - Background Image behind child widgets

我有一个 Qt 界面:

我的界面是这样的:

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)

即带有按钮的小部件。小部件背景是图像。按钮背景应该是白色的,但是由于小部件背景图像,按钮样式表根本没有显示。

我希望按钮背景位于小部件背景图像的顶部。关于如何做到这一点有什么想法吗?

问题是因为背景图像将应用于所有小部件,所以按钮的颜色没有被修改。一种解决方案是仅将背景图像应用于小部件,因此我们使用 . selector:

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