Qt 自定義委託(delegate) 實現進度條

前言:

本文就不介紹基礎了
需要具備 M-V-D的知識
model view delegate
不清楚 mvd 結構的 建議先去了解一下 否則看起來比較喫力

在這裏插入圖片描述

項目結構比較簡單清晰 一個小demo

github 源碼地址

在這裏插入圖片描述
main 函數

manwindow 主界面

progressbardelegate 自定義的進度條委託

我們自定義委託 直接上代碼吧

在這裏插入圖片描述
我們這個小demo 只需要 重寫基類的 paint 就行

如果有其他需要 可以看基類的 成員函數
在這裏插入圖片描述

這裏就不多說了
在這裏插入圖片描述

paint 的實現
首先 只有第2列的 單元格的內容才變爲進度條
所以 我們上面的判斷條件 是 index.column() == 1

下面是 寫了進度條
當前的進度
rect 外邊框位置
最大最小值
文字 18%

有人可能好奇 爲啥 不用QProgressBar 而用 QStyleOptionProgressBar

因爲上面的形參 option 和 draw 的參數 都要填寫 QStyle 的子類 啥啥啥 可以看下api
在這裏插入圖片描述

行 這樣 我們一個簡單的委託就完成了

看一下主界面

mainwindow

在這裏插入圖片描述

這次 我寫 沒有用 .UI 手擼界面就行 不拖控件了 (不過就一個控件 都不用寫佈局…)

一個 tableview
一個 model 我們不用自定義 默認的就可以
一個 自定義的委託

M-V-D 集齊了(model tableview delegate)

還有一個定時器Qtimer 用來模仿增加進度的功能

在這裏插入圖片描述

設置 窗口的大小 400,200

實例化 tableview

設置自適應大小

設置item 單元格不能編輯

設置中心窗口 就是 tableview

在這裏插入圖片描述
實例化 model

設置 兩列

第一列的表頭是 影片名稱 第二列的表頭是 下載進度

然後 第一列的內容 是xxx

給 tableview 設置 model

在這裏插入圖片描述

實例化 我們自定義的委託

給 tableview 設置 委託

在這裏插入圖片描述

在這裏插入圖片描述

弄一個定時器 每秒觸發一次 讓當前的進度 +1

ok 簡單的 一個自定義委託完成 寫的很簡單 說的很細了 都能看懂吧 希望能幫到你

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章