Как с помощью QSS покрасить выбранный в QTableWidget столбец?
Пытаюсь сделать стиль с помощью QSS так, чтобы по нажатии на столбец выделялась цветом только секция, на которую кликнул пользователь, а по нажатии на строчку заголовки не выделялись жирным. Любые попытки это изменить (или изменить стили) приводили просто к потере даже системного стандартного выделения.
С hover получилось отлично, а вот selected не получается реализовать. background-color для QHeaderView::section:selected || QHeaderView::item:selected не помогает. Также не работает и просто selection-background-color для секции или хедера отдельно.
Возможно ли вообще так покрасить головную ячейку и одновременно отменить выделение жирным заголовков?
На скрине пример работы - нажал на столбец, фильтрация прошла, но сама секция не выделилась цветом. Справа от неё всё в порядке: навёл мышкой - загорелась секция фиолетовым.
main.py
import sys
from PyQt5 import QtWidgets
from ui import untitled
class MainWindow(QtWidgets.QMainWindow, untitled.Ui_Form):
def __init__(self):
super(MainWindow, self).__init__()
self.setupUi(self)
self.setWindowTitle('Form')
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec_()
untitled.py (конвертировал из .ui в .py)
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(702, 320)
self.tableWidget = QtWidgets.QTableWidget(Form)
self.tableWidget.setGeometry(QtCore.QRect(220, 60, 321, 151))
self.tableWidget.setStyleSheet("QHeaderView\n"
"{ \n"
" border: 0px;\n"
" font-size: 14px;\n"
"}\n"
"\n"
"QHeaderView::section\n"
"{\n"
" min-width: 10px; \n"
" min-height: 25px;\n"
" border: 0px solid;\n"
"}\n"
"\n"
"QHeaderView::section:hover {\n"
" color: white;\n"
" background-color: purple;\n"
"}\n"
"QHeaderView::section:selected{\n"
" color: white;\n"
" background-color: green;\n"
"} \n"
"\n"
"")
self.tableWidget.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection)
self.tableWidget.setShowGrid(True)
self.tableWidget.setObjectName("tableWidget")
self.tableWidget.setColumnCount(3)
self.tableWidget.setRowCount(2)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(0, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(1, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(0, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(1, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(2, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setItem(0, 0, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setItem(0, 1, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setItem(0, 2, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setItem(1, 0, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setItem(1, 1, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setItem(1, 2, item)
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
self.tableWidget.setSortingEnabled(True)
item = self.tableWidget.verticalHeaderItem(0)
item.setText(_translate("Form", "1"))
item = self.tableWidget.verticalHeaderItem(1)
item.setText(_translate("Form", "2"))
item = self.tableWidget.horizontalHeaderItem(0)
item.setText(_translate("Form", "New Column"))
item = self.tableWidget.horizontalHeaderItem(1)
item.setText(_translate("Form", "1"))
item = self.tableWidget.horizontalHeaderItem(2)
item.setText(_translate("Form", "3"))
__sortingEnabled = self.tableWidget.isSortingEnabled()
self.tableWidget.setSortingEnabled(False)
item = self.tableWidget.item(0, 0)
item.setText(_translate("Form", "wwerq"))
item = self.tableWidget.item(0, 1)
item.setText(_translate("Form", "qwerqwer"))
item = self.tableWidget.item(0, 2)
item.setText(_translate("Form", "qwerqwre"))
item = self.tableWidget.item(1, 0)
item.setText(_translate("Form", "qwerqwer"))
item = self.tableWidget.item(1, 1)
item.setText(_translate("Form", "qwerqwe"))
item = self.tableWidget.item(1, 2)
item.setText(_translate("Form", "qwer"))
self.tableWidget.setSortingEnabled(__sortingEnabled)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Form = QtWidgets.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())
