python - 编辑单元格时pyqt5 qtablewidget单元格背景

标签 python pyqt5 qtablewidget qtstylesheets

self.grid.setStyleSheet("QTableWidget::item::selected { background-color:#F9F6F5 ; color:black;  
border: 3px solid black; }")

目前,我正在使用 styleSheet 作为 qtablewidget 背景,当我选择一个项目时,它会更改该单元格的背景 like this这就是我想要的

但是当我开始编辑时,它又恢复为默认设置 like this我不知道应该使用哪个关键字来代替 'item::selected' 或者它是否存在

最佳答案

您可以使用后代css selector ,它可用于指定另一个小部件的后代的样式(它可以是直接子项、“孙子”等)。

如果项目具有字符串值,则项目 View 的编辑通常使用 QLineEdit 完成,解决方案是使用 QTableWidget QLineEdit,并且由于样式将相同,因此您也可以连接带逗号的选择器:

self.grid.setStyleSheet('''
    QTableWidget::item::selected, <b>QTableWidget QLineEdit</b> { 
        background-color: #F9F6F5; 
        color: black; 
        border: 3px solid black; 
    }
''')

请注意,您需要后代选择器,而不是仅适用于直接子级子选择器(parent > child):编辑器项目 View 的 subview 不是该 View 的直接子级,因为项目 View 具有以下层次结构:

项目 View -> 视口(viewport)(可滚动内容) -> 编辑器

如果您在表格小部件上设置样式表,则甚至不需要后代选择器,因为它会自动应用于应用了 css 的小部件的子级的所有小部件。

如果 Qt.DisplayRole 使用其他数据类型(或者,更准确地说,Qt.EditRole),您应该使用相关的小部件,具体取决于类型:例如,如果将值设置为整数,则将使用 QSpinBox,因此选择器将为 QTableWidget QSpinBox

除了字符串和 bool 值(使用 QComboBox)之外,所有其他标准编辑小部件都是 QAbstractSpinBox 的子类,因此您可以只使用该父类(在下面的示例中,我假设 self.grid 是一个 QTableWidget):

    self.grid.setStyleSheet('''
        QTableWidget::item::selected, 
        QLineEdit, QComboBox, QAbstractSpinBox {
            ...
        }
''')

如果样式表设置在父级(例如,主窗口,甚至整个应用程序)上,您仍然需要后代选择器:

class MyMainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        # ...
        self.setStyleSheet('''
            QTableWidget::item::selected, 
            QTableWidget QLineEdit, 
            QTableWidget QComboBox, 
            QTableWidget QAbstractSpinBox {
                ...
            }
        ''')

关于python - 编辑单元格时pyqt5 qtablewidget单元格背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63777633/

相关文章:

c++ - 如何更改 QTableWidget 的最小尺寸?

Qt 小部件调整为宽度 = 256,而它不应该

python - 如何在 multiprocessing.Process 中传递未 pickle 的对象作为参数?

python - QThread 没有完成

python - 在完全平坦的 HTML 层次结构上使用 BeautifulSoup

python - PyQt QtCharts 设计器插件

python - 将小部件嵌入到 QWindow 中

python - 在 PyQT4 中上下移动行

python - view.py 中使用的 Django bool 字段

python - 在 Django 中迁移到 mysql