python - 如何将一个 QtWidget(例如 QTreeWidget)的样式(表)应用到另一个小部件(例如 QLabel)?
问题描述
我在两个不同的系统上运行了下面的 MCVE 片段,它们产生了屏幕截图中描述的窗口。如您所见,它们的边框样式不同。我不介意。允许两个系统上的边框样式不同。但是,对于一个系统,我希望两个 QtWidgets 的边框样式相同。的边框样式QLabel
似乎还没有设置。
如何将 的边框样式设置为与 的QLabel
边框样式相同的边框样式QTreeWidget
?
MCVE 片段
import sys
from PyQt5.QtWidgets import *
class widget(QWidget):
def __init__(self):
super().__init__()
treewidget = QTreeWidget(self)
label = QLabel(self)
label.setStyleSheet("background-color: white; min-height: 200px;")
grid = QGridLayout()
grid.setSpacing(10)
grid.addWidget(treewidget, 1, 0)
grid.addWidget(label, 2, 0)
self.setLayout(grid)
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
f = widget()
sys.exit(app.exec_())
来自两个不同系统的屏幕截图
解决方案
由于以下原因,您的一般问题无法解决:
小部件的属性不被其他小部件共享。
某些属性的值是有默认值的,高度依赖于Qt开发者的决定,比如QLabel的边缘,即边缘可以修改但默认值不能读取。
不是所有的视觉元素都可以用 Qt Style Sheet 来修改,实际上它是非常有限的,创建一个自定义的 QStyle 通常会更好。
但是您的特定问题可以解决,在这种情况下,我们将边框设置为无。
from PyQt5 import QtWidgets
QSS = '''
QTreeWidget{
border: None
}
QLabel{
background-color: white;
min-height: 200px;
}
'''
class widget(QtWidgets.QWidget):
def __init__(self):
super().__init__()
treewidget = QtWidgets.QTreeWidget()
label = QtWidgets.QLabel()
grid = QtWidgets.QGridLayout(self)
grid.setSpacing(10)
grid.addWidget(treewidget, 1, 0)
grid.addWidget(label, 2, 0)
self.show()
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
app.setStyleSheet(QSS)
f = widget()
sys.exit(app.exec_())
推荐阅读
- ios - UIScrollView 在触摸时滚动到顶部
- android - 是什么导致了这个 KeyStore 异常?
- android-studio - Android Studio logcat 更新后不显示异常
- javascript - 如何通过基于对象内的字段添加 where 条件从 firestore 检索数据?
- c++ - 解析json数据并从数据中获取一条记录的schema
- angular - 参数化的 NgRx 选择器不必要地触发
- c# - 如何访问项目C#中bin文件夹内的自定义文件夹
- jenkins - 如何隐藏詹金斯管道阶段视图日志按钮?
- php - Wordpress 网站在桌面浏览器上显示为移动设备
- xml - 如何使用 XSLT 转换这个 XML(内循环问题)?