[英]How to change background color of selected or clicked cell in a pyqt5 QTableWidget?
[英]pyqt5 qtablewidget cell background while editing cell
您可以使用后代css 選擇器,它可用於指定作為另一個后代的小部件的樣式(它可以是直系子、“孫子”等)。
如果項目具有字符串值,則項目視圖的編輯通常使用 QLineEdit 完成,解決方案是使用QTableWidget QLineEdit
,並且由於樣式將相同,您還可以使用逗號連接選擇器:
self.grid.setStyleSheet('''
QTableWidget::item::selected, QTableWidget QLineEdit {
background-color: #F9F6F5;
color: black;
border: 3px solid black;
}
''')
請注意,您需要后代選擇器,而不是僅用於直接子項的子選擇器( parent > child
):項目視圖的編輯器不是視圖的直接子項,因為項目視圖具有以下層次結構:
項目視圖 -> 視口(可滾動內容) -> 編輯器
如果您在表格小部件上設置樣式表,則甚至不需要后代選擇器,因為它會自動應用於作為應用了 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 {
...
}
''')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.