繁体   English   中英

PySide2-更改表格标题背景色

[英]PySide2 - change table header background color

我现在拥有的是默认的QTableWidget。 我只更改了具有偶数索引的行的背景色。 我想对表头做同样的事情。

在此处输入图片说明

我试过的self.horizontalHeaderItem(...).setBackgroundColor(QColor(...))self.horizontalHeaderItem(...).setBackground(QBrush(...)) -失败。

接下来我尝试了什么self.horizontalHeader().setStyleSheet("::section {" "background-color: lightblue; }") -我设法更改了背景色。 问题是(1)由于我在PySide2文档中找不到它,所以我不太了解这段代码的实际含义,(2)该代码不仅更改了背景,而且更改了许多标头外观功能。

如何仅更改标题背景? 或更笼统地说-如何调整PySide2中表格标题的外观?

在此处输入图片说明

在这里,我将发布我在寻求答案时学到的知识-2种可能的解决方案。

我猜问题出在notImplementednotDocumentednotExplained问题的混合混杂中。 我希望将来情况会有所好转。 现在回答。

该问题可以这样解决(也可以不这样):

plt = QPalette()
plt.setColor(QPalette.Button, QColor(128, 0, 0))
my_table_widget.horizontalHeader().setPalette(plt)

QPalette控制小部件的颜色。 但是外观控制还有另一层-样式。 我在Win10x64上使用PySide2,因此默认样式为windowsvista ,共有3种样式: fusionwindowswindowsvista Windowsvista样式会忽略大多数调色板颜色。 因此,为了使这种方法起作用,应该更改整个应用程序的样式(或仅更改某些小部件?):

app.setStyle(QStyleFactory.create('fusion'))

我想出的另一种解决方案是(对我而言更可取):

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文档。 应用第二种解决方案后,我的表格外观如何:

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM