我现在拥有的是默认的QTableWidget。我只更改了具有偶数索引的行的背景色。我想对表头做同样的事情。
我尝试的操作-self.horizontalHeaderItem(...).setBackgroundColor(QColor(...))
和self.horizontalHeaderItem(...).setBackground(QBrush(...))
-失败。
我接下来尝试做的-self.horizontalHeader().setStyleSheet("::section {" "background-color: lightblue; }")
-我设法更改了背景色。问题是(1)由于我在PySide2文档中找不到它,所以我不太了解这段代码的实际含义,(2)该代码不仅更改了背景,而且更改了许多标头外观功能。
如何仅更改标题背景?或更笼统地说-如何调整PySide2中表格标题的外观?
答案 0 :(得分:1)
在这里,我发布了我在寻求答案时学到的知识-两种可能的解决方案。
我猜想问题出在PySide2的notImplemented
,notDocumented
,notExplained
问题的混合混杂中。我希望将来情况会有所好转。现在到答案了。
问题可以这样解决(也可以不解决):
plt = QPalette()
plt.setColor(QPalette.Button, QColor(128, 0, 0))
my_table_widget.horizontalHeader().setPalette(plt)
QPalette
控制小部件的颜色。但是外观控制还有另一层-样式。我在Win10x64上使用PySide2,因此默认样式为windowsvista
,共有3种样式:fusion
,windows
,windowsvista
。 Windowsvista
样式会忽略大多数调色板颜色。因此,为了使这种方法起作用,应该更改整个应用程序的样式(或仅更改某些小部件?):
app.setStyle(QStyleFactory.create('fusion'))
我想出的另一种解决方案是(对我而言更合适):</ p>
my_table_widget.horizontalHeader().setStyleSheet('''
::section {
background-color: lightgray;
border-style: flat;
padding: 0px 5px;
}''')
与:
my_table_widget.horizontalHeader().setDefaultAlignment(Qt.AlignLeft | Qt.AlignVCenter)
我猜这是一个用于调整按钮外观的样式表。我不太了解section
一词的含义。此外,要使用这种方法,应该使用google和Qt5文档。应用第二种解决方案后,我的表格外观如何: