You can use the modyfing style to draw a widget. My attempt seemed to work well, but it tricked the qt style system a bit, so I canβt guarantee that it will work under all possible styles on all platforms. So here it is:
class myViewStyle: public QProxyStyle{ public: myViewStyle(QStyle* style = 0); void drawPrimitive ( PrimitiveElement element, const QStyleOption * option, QPainter * painter, const QWidget * widget = 0 ) const; }; myViewStyle::myViewStyle(QStyle* style) :QProxyStyle(style) {} void myViewStyle::drawPrimitive ( PrimitiveElement element, const QStyleOption * option, QPainter * painter, const QWidget * widget) const{ if (element == QStyle::PE_IndicatorItemViewItemDrop && !option->rect.isNull()){ QStyleOption opt(*option); opt.rect.setLeft(0); if (widget) opt.rect.setRight(widget->width()); QProxyStyle::drawPrimitive(element, &opt, painter, widget); return; } QProxyStyle::drawPrimitive(element, option, painter, widget); } myView::myView(QWidget *parent) : QTreeView(parent) { setStyle(new myViewStyle(style())); }
source share