#python #pyqt5 #qtableview
#python #pyqt5 #qtableview
Вопрос:
Я использую PyQt5 QTableView для отображения таблицы SQL в моем графическом интерфейсе. Чтобы выровнять значения в последнем столбце, я использую это:
delegate = AlignDelegate(self.view)
self.view.setItemDelegateForColumn(3, delegate)
class AlignDelegate(QtWidgets.QStyledItemDelegate):
def initStyleOption(self, option, index):
super(AlignDelegate, self).initStyleOption(option, index)
option.displayAlignment = (QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
Теперь мне интересно, могу ли я добавить что-нибудь AlignDelegate
, чтобы также изменить цвет отображаемых чисел (покрасить отрицательные числа в красный цвет). Я не нашел рабочего решения, поэтому было бы очень приятно, если бы кто-нибудь мог дать мне подсказку.
Я использую Python 3.8, PyQt5 5.15.0, PyCharm 2020.2 и Linux Mint 19.3.
Ответ №1:
Вам нужно изменить палитру QStyleOptionViewItem, чтобы изменить цвет текста, и backgroundBrush QStyleOptionViewItem, чтобы изменить цвет фона.
class AlignDelegate(QtWidgets.QStyledItemDelegate):
def initStyleOption(self, option, index):
super(AlignDelegate, self).initStyleOption(option, index)
option.displayAlignment = QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter
value = index.data()
if value < 0:
option.palette.setBrush(
QtGui.QPalette.Text, QtGui.QBrush(QtGui.QColor("red"))
)
option.backgroundBrush = QtGui.QBrush(QtGui.QColor("green"))