c – 为什么我在QTableView中看不到掉落指示器?
我在QTableView(工作)中使用拖放功能.但是,我没有看到任何跌落指标.我应该看到一条应该插入掉线的线,不应该吗?至少
here他们这么说.
我的init非常标准. // see model for implementing logic of drag this->viewport()->setAcceptDrops(allowDrop); this->setDragEnabled(allowDrag); this->setDropIndicatorShown(true); this->m_model->allowDrop(allowDrop); 我不知道为什么我没有看到指标.样式表与视图一起使用,可能就是原因.但是,我已经禁用了样式表,但仍然没有看到它. 视图使用整行进行选择,不确定这是否会导致问题.所以任何暗示都值得赞赏. – 编辑 – 截至下面的评论,尝试了所有选择模式:单,多或扩展,没有视觉效果.也试过细胞而不是行选择,再没有任何改进. – 编辑2 – 目前正在评估another style proxy example,类似于下面的那个,最初引用here – 相关 – QTreeView draw drop indicator 解决方法
我遇到了同样的问题,我尝试了两个对我有用的选项. IIRC,帮助来自SO的回答.
>如果您是QTreeView的子类,则可以覆盖其paintEvent()方法.它默认调用drawTree()方法和paintDropIndicator()一个(后者是QAbstractItemView私有类的一部分). 你可以从paintEvent()调用drawTree(),它也应该覆盖默认的拖放指示器: class MyTreeView : public QTreeView { public: explicit MyTreeView(QWidget* parent = 0) : QTreeView(parent) {} void paintEvent(QPaintEvent * event) { QPainter painter(viewport()); drawTree(&painter,event->region()); } }; >另一种方法是子类QProxyStyle并覆盖drawPrimitive()方法.当您将元素QStyle :: PE_IndicatorItemViewItemDrop作为参数获取时,您可以按照自己的方式绘制它. 代码如下所示: class MyOwnStyle : public QProxyStyle { public: MyOwnStyle(QStyle* style = 0) : QProxyStyle(style) {} void drawPrimitive(PrimitiveElement element,const QStyleOption* option,QPainter* painter,const QWidget* widget) const { if (element == QStyle::PE_IndicatorItemViewItemDrop) { //custom paint here,you can do nothing as well QColor c(Qt::white); QPen pen(c); pen.setWidth(1); painter->setPen(pen); if (!option->rect.isNull()) painter->drawLine(option->rect.topLeft(),option->rect.topRight()); } else { // the default style is applied QProxyStyle::drawPrimitive(element,option,painter,widget); } } }; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |