I need to implement rows moving via drag-n-drop in QTreeView and show the drop indicator between rows. I am wondering if there is a way to override indicator drawing, so it is displayed for all levels of hierarchy between rows only (not the rectangle around the item), the line must be as wide as the entire row (not as the one column).
QTreeView draw drop indicator
I am facing similar problem. It seems that nobody knows (or wants to tell :P), so as usual in such cases, when i have some more time, I will dig through qt sources to find out what is possible and what's not. As soon as I know something I will try to answer your question. –
Aglaia
It is possible by modyfing style used to draw widget. My attempt seemed to work well, but it's a bit of cheating the qt's style system, so i cannot guarante 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()));
}
Thanks alot. Your code works fine in an Xfce-DE. "Ported" your code to python, cause I did not find a simple solution included in QT. Learned something. –
Carlton
I know it's been 6 years, but could you share your python code? I have a similar question. –
Rishi
@Rishi You can find the python code here: web.archive.org/web/http://apocalyptech.com/linux/qt/qtableview –
Drais
Works as is on OSX Ventura + Qt5 and no special other style. –
Tilt
Memory management is missing, your myViewStyle instance is never deleted. See https://mcmap.net/q/1172950/-qstyle-ownership/… –
Tilt
© 2022 - 2024 — McMap. All rights reserved.