天天看点

QTreeView绘制拖放指示器,自定义拖拽样式,拖放样式

QTreeView绘制拖放指示器,自定义拖拽样式,拖放样式

QT QTreeView/QTreeWidget 自带拖放指示器样式不是很明显,我想让拖放指示器明显一些,找了好久没有相关资料。

最终通过各种百度,各种关键字查找(QTreeView 美化,QTreeView 样式,QTreeView 自绘,QTreeView QSS),各种查看源码。最终实现如图效果。

QTreeWidget应该也可以使用的。

Qt就是好啊。遇到问题可以查看源码。然后通过源码找到解决方案。或者找到搜索关键字。

我这边继承了QTreeview。实现了一些自绘效果。旁边三个按钮是通过QStyledItemDelegate绘制的。

class CNodeTreeView : public QTreeView {
    Q_OBJECT
public:
    explicit CNodeTreeView(QWidget *parent = nullptr);
    
    // 绘制下箭头
    virtual void drawBranches(QPainter*          painter,
                              const QRect&       rect,
                              const QModelIndex& index) const override;
    
    // 绘制竖线
    virtual void paintEvent(QPaintEvent *event) override;
    // 绘制item之间的分割线
    virtual void drawRow(QPainter *painter, const QStyleOpti
           

继续阅读