Я использую QTableView в PyQT5 для отображения таблицы данных.
Я могу установить цвет фона каждой ячейки в зависимости от условия. Например, чтобы сделать ячейку красной:
class TableModel(QtCore.QAbstractTableModel):
def __init__(self, data):
super(TableModel, self).__init__()
self._data = data
def data(self, index, role):
if role == Qt.BackgroundRole:
if condition == ...
return QtGui.QColor('#9C0006')
Однако вместо применения цвета фона ко всей ячейке я хочу применить цвет только к части ячейки (на основе значения ячейки). Например, вот так:
Возможно ли это с QT, и если да, то какие настройки мне нужно изменить? Я считаю, что QBrush
позволяет мне установить шаблон заливки (т.е. градиент, как на изображении выше), однако существует ли класс, который обрабатывает размер элемента цвета фона относительно размера ячейки, и его размещение в ячейке?
ОБНОВЛЕНИЕ:
Теперь у меня есть следующий код в Python, который устанавливает длину градиента, равную 50% от ширину ячейки (которую я позже могу установить динамически).
if role == Qt.BackgroundRole:
percent = 0.5
gradient = QtGui.QLinearGradient(QtCore.QPointF(0, 0), QtCore.QPointF(1, 0))
gradient.setColorAt(0, Qt.red)
gradient.setColorAt(percent, Qt.white)
gradient.setColorAt(1, Qt.white)
gradient.setCoordinateMode(QtGui.QLinearGradient.ObjectMode)
return QtGui.QBrush(gradient)
Это обеспечивает следующее форматирование:
Есть ли способ обеспечить заполнение, скажем, 5% сверху и снизу каждой ячейки, чтобы форматирование градиента заполняло только 90% вертикального пространства ячейки, а не 100% в настоящее время? Т.е. что-то вроде этого (см. Верхние 3 строки).
Я полагаю, мне нужно установить координаты QBru sh, чтобы QBru sh работа происходит только на части ячейки? Однако я не могу найти в документации QBru sh ничего, связанного с координатами. Возможно ли это?