天天看點

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
           

繼續閱讀