表格與樹——QTreeView
QTreeWidget
?顧名思義,這是用來展示樹型結(jié)構(gòu)(也就是層次結(jié)構(gòu))的。
Qt中實(shí)現(xiàn)樹形結(jié)構(gòu)可以使用QTreeWidget
類,也可以使QTreeView
類。QTreeWidget
繼承自QTreeView
類。這個(gè)類需要同另外一個(gè)輔助類QTreeWidgetItem
一同使用。
不過,既然是提供方面的封裝類,即便是看上去很復(fù)雜的樹,在使用這個(gè)類的時(shí)候也是顯得比較簡(jiǎn)單的。
當(dāng)不需要使用復(fù)雜的QTreeView
的特性的時(shí)候,我們可以直接使用QTreeWidget
代替。
QTreeWidget類中常用的方法如下表所示:

QTreeWidgetItem類中的常用方法如下表:

1、樹形結(jié)構(gòu)的實(shí)現(xiàn)
樹形結(jié)構(gòu)時(shí)通過QTreeWidget和QTreeWidgetItem類實(shí)現(xiàn)的,其中QTreeWidgetItem類實(shí)現(xiàn)了節(jié)點(diǎn)的添加。

實(shí)例演示1:樹形結(jié)構(gòu)的實(shí)現(xiàn)
運(yùn)行程序,顯示效果如下;

1.1 設(shè)置節(jié)點(diǎn)狀態(tài)
在上面顯示的基礎(chǔ)上,我們?cè)O(shè)置下節(jié)點(diǎn)的狀態(tài),也就是設(shè)計(jì)節(jié)點(diǎn)是否可被選中,可以使用QTreeWdigetItem的setCheckState()函數(shù)實(shí)現(xiàn),添加代碼如下:
顯示效果如下:

1.2 設(shè)置節(jié)點(diǎn)的背景顏色
可以使用QBrush類來設(shè)置節(jié)點(diǎn)的背景顏色,例如設(shè)置根節(jié)點(diǎn)的背景顏色,代碼如下:
顯示效果如下:

2、給節(jié)點(diǎn)添加響應(yīng)事件
下面演示當(dāng)單擊屬性控件時(shí),觸發(fā)樹形節(jié)點(diǎn)的響應(yīng)事件。
實(shí)例演示2:添加響應(yīng)事件
鼠標(biāo)點(diǎn)擊時(shí),所在的行變成綠色,顯示效果如下。

3、系統(tǒng)定制模式
在上面的例子中,QTreeWidgetItem類的節(jié)點(diǎn)是一個(gè)個(gè)添加的,這樣做有時(shí)很不方便,特別是當(dāng)窗口中產(chǎn)生比較復(fù)雜的樹形結(jié)構(gòu)時(shí),一般都是通過QTreeView類來實(shí)現(xiàn)的,而不是QTreeWidget類。QTreeView類與 QTreeWidget類最大的區(qū)別就是,QTreeView類可以使用操作系統(tǒng)提供的定制模式,比如文件系統(tǒng)盤的樹列表。
實(shí)例演示3:系統(tǒng)定制模式
運(yùn)行代碼,則顯示出當(dāng)前電腦磁盤信息,顯示效果如下圖所示。
