gpt4 book ai didi

QTreeView 绘制下降指示器

转载 作者:行者123 更新时间:2023-12-04 13:07:33 24 4
gpt4 key购买 nike

我需要在 QTreeView 中通过拖放来实现行移动,并在行之间显示放置指示器。我想知道是否有一种方法可以覆盖指标绘图,因此它仅针对行之间的所有层次结构显示(不是项目周围的矩形),该行必须与整行一样宽(而不是一列)。

最佳答案

可以通过修改用于绘制小部件的样式来实现。我的尝试似乎工作得很好,但它有点欺骗了 qt 的样式系统,所以我不能保证它可以在所有平台上的所有可能的样式下工作。所以这里是:

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()));
}

关于QTreeView 绘制下降指示器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7596584/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com