将 QScrollArea 背景设置为透明会使内容消失并更改滚动条外观

Setting QScrollArea background to transparent makes contents disappear and changes scroll bar looks

所以一个带有许多按钮的简单滚动区域看起来像这样:

使用以下代码:

from PyQt5.QtWidgets import QWidget, QApplication, QScrollArea, QVBoxLayout, QPushButton

class TestWindow(QWidget):
    def __init__(self):
        super().__init__()
        scroll = QScrollArea()
        # scroll.setStyleSheet('background: transparent')
        widget = QWidget(self)
        widget.setLayout(QVBoxLayout())
        for i in range(10):
            widget.layout().addWidget(QPushButton())
        scroll.setWidget(widget)

        self.setLayout(QVBoxLayout())
        self.layout().addWidget(scroll)

        self.show()

if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    w = TestWindow()
    w.show()
    sys.exit(app.exec_())

但是如果我使用 scroll.setStyleSheet('background: transparent') 将滚动区域的背景设置为透明,它会使按钮消失并改变滚动条的外观:

显然我做错了什么。你能帮我找出我的错误吗?

原来我只需要专门使用 scroll.setStyleSheet('QScrollArea {background: transparent;}')

更改滚动区域的背景