如何在 Pyqt5 中设置 QTableWidget 的样式

How to style a QTableWidget in Pyqt5

我目前正在设计我的 GUI 应用程序,但我在设计我的 QTableWidget 时遇到了一些麻烦,因为正如你在图片中看到的那样,我的 QTableWidget 的左上角有一个小的白色区域,我想要它与 table.

的其余部分一样呈浅蓝色

这是我到目前为止的样式代码:

def start_ui():
    app = QtWidgets.QApplication(sys.argv)
    style = """
        QFrame{
            color: blue;
            background: lightgreen;
            font-weight: bold;
        }
        QLabel{
            color: blue;
            font-weight: bold;
        }
        QLineEdit{
            color: blue;
            border-style: solid;
            border: 2px solid black;
            background: lightblue;
            font-weight: bold;
        }
        QPushButton{
            border-style: solid;
            border: 2px solid black;
            color: darkblue;
            background: lightblue;
            font-weight: bold;
        }
        QTableWidget{
            background: lightblue;
        }
    """
    app.setStyleSheet(style)
    win = ModbusLoggerWindow()
    win.show()
    sys.exit(app.exec_())

然后我在 class 中有这三行,我在其中创建我的 QTableWidget,这些行为我的 verticalheaders 和 horizo​​ntalheaders 设置样式:

    stylesheetHeader = "::section{background-color: lightblue}"
    self.tableWidget.horizontalHeader().setStyleSheet(stylesheetHeader)
    self.tableWidget.verticalHeader().setStyleSheet(stylesheetHeader)

左上角的这个元素不是 QHeaderView 的一部分,而是 QAbstractButton 的一部分,因此可能的解决方案是将样式表直接应用于按钮:

button = self.tableWidget.findChild(QAbstractButton)
button.setStyleSheet("background-color: lightblue")

为了避免使用 findChild,可以通过 QTableWidget 进行设置:

stylesheet = """
QHeaderView::section{background-color: lightblue}
QAbstractButton{background-color: lightblue}
"""
self.tableWidget.setStyleSheet(stylesheet)