Как улучшить неудобное перерисовывание строк делегата в QTreeView?Python

Программы на Python
Ответить
Anonymous
 Как улучшить неудобное перерисовывание строк делегата в QTreeView?

Сообщение Anonymous »

В центре моего приложения Python/Qt находится табличное представление с использованием QTableView. В одном столбце я реализовал спарклайны, создав подкласс QStyledItemDelegate, установив элементы данных в соответствующем столбце в виде пустых массивов и отобразив их в методе рисования делегата.
Мои линейные графики немного выходят за пределы ограничивающих рамок, но мне нравится этот эффект (и я бы хотел его сохранить):
Изображение

Однако, когда я провожу кистью вниз, происходит некоторая перерисовка и каким-то образом некоторая перерисовка фона, что приводит к временное изображение, где нейтральный фон разбивает перекрашенные линии:
Изображение

Когда я выхожу из окна или касаюсь заголовка, некоторая перерисовка происходит снова, возвращаясь к первому image.
Вопросы
Как и где происходит перерисовка фона и что я могу сделать, чтобы на нее повлиять? Я удивлен, потому что мой пользовательский код переопределяет метод рисования делегатов и рисует только линии.
Мой метод рисования

Код: Выделить всё

def paint(self, painter, option, index):

data = index.data(UserRole+1)
rectF = option.rect.toRectF()
ndims = self.ndims
yscale = self.yscale

midHeight = rectF.top() + rectF.height()/2
ctrLine = QtCore.QLineF( rectF.left(), midHeight,
rectF.right(), midHeight )
painter.setPen( self.midPen )
painter.drawLine( ctrLine )

painter.setPen( self.linePen )

segWidth = rectF.width() / (ndims-1)
for s in range(ndims-1):
seg = data[s:s+2]
segProj = -seg / yscale * rectF.height()
segLine = QtCore.QLineF( rectF.left() + s*segWidth,
midHeight + segProj[0],
rectF.left() + (s+1)*segWidth,
midHeight + segProj[1]  )
painter.drawLine( segLine )
Я попробовал установить item.setBackground( Brush ) с непрозрачным или прозрачным QColor. Ни один из них ничего не дал, потому что мой код рисования никогда не вызывает рисование фона.


Подробнее здесь: https://stackoverflow.com/questions/793 ... -qtreeview
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»