我有一个包含 QTabWidget 的 PyQt 主窗口。选项卡小部件包含一些按钮和文本框。
我想为整个标签背景着色,而不仅仅是标签栏区域中突出的标签。
我没有使用样式表,而是更喜欢使用调色板,因为我已经在使用调色板,但如果样式表是唯一的选择,那也没关系。
我试过:
p = self.tabWidget.palette()
p.setColor(self.tabWidget.backgroundRole(), Qt.red)
self.tabWidget.setPalette(p)
这会产生一个红色的标签栏区域,但主背景仍然是白色的。
关闭自动填充,使用 self.tabWidget.setAutoFillBackground(False) 略有不同,现在各个选项卡的颜色都很好,但主体仍然是白色。
尝试一些样式表:
self.tabWidget.setStyleSheet("QWidget {background-color: yellow }")
这会为选项卡的主体着色,但它也会将其他所有内容(包括按钮和文本框)着色为黄色。此外,所有竖起的小标签都是黄色的。自动填充没有任何影响。
关于如何为选项卡主体着色但又不清除其他小部件的任何想法?
我使用的是 PyQt 4.10 版和 Python 2.7。
请您参考如下方法:
使用 StyleSheet,你可以做这样的事情:
stylesheet = """
QTabBar::tab:selected {background: gray;}
QTabWidget>QWidget>QWidget{background: gray;}
"""
self.setStyleSheet(stylesheet)
人字形允许引用小部件的子项。它告诉 Qt 将样式表应用于应用程序中任何 QTabWidget 的孙子级(参见 Qt StlyleSheet syntax)。选项卡“body”是 QTabWidget 的孙子。
它的渲染效果不是很好,您必须调整一些设置。请参阅关于 Customizing QTabWidget and QTabBar 的 Qt 文档.
