将 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;}')
更改滚动区域的背景
所以一个带有许多按钮的简单滚动区域看起来像这样:
使用以下代码:
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;}')