Согласно последней ветке Qt 5.11 на github , тест представляет собой простую высоту, равную 0:
case PE_IndicatorItemViewItemDrop: {
QRect rect = opt->rect;
if (opt->rect.height() == 0)
p->drawLine(rect.topLeft(), rect.topRight());
else
p->drawRect(rect);
break; }
Ваш код должен использовать тот же тест, чтобы решить, какой цветиспользовать.Если option.rect.height == 0
, то Qt::green
иначе Qt::red
.Скопируйте текущий QPen и измените его цвет, затем вызовите базовый класс drawPrimitive.Следующего псевдокода должно быть достаточно:
lastPen = painter.pen()
myPen = QtGui.QPen(lastPen)
if (option.rect.height() == 0):
myPen.setColor(Qt.green)
else:
myPen.setColor(Qt.red)
painter.setPen(myPen)
QProxyStyle.drawPrimitive(self, element, option, painter, widget)
painter.setPen(pen)
Извините, если код некрасив.Я не знаю PySide, только C ++ Qt.