接著前面的內容,今天要說的是另外乙個item view class,qtreewidget。顧名思義,這個類用來展示樹型結構。同前面說的qlistwidget類似,這個類需要同另外乙個輔助類 qtreewidgetitem一同使用。不過,既然是提供方面的封裝類,即便是看上去很複雜的樹,在使用這個類的時候也是顯得比較簡單的。當不需要使用複雜的qtreeview的特性的時候,我們可以直接使用qtreewidget代替。
下面來看**。
treewidget.h
#include
class treewidget : public qwidget
; #endif // treewidget_h
treewidget.cpp
#include "treewidget.h"
treewidget::treewidget()
首先,我們在建構函式裡面建立了乙個qtreewidget的例項。然後我們呼叫setcolumncount()函式設定欄數。這個函式的效果我們以後再看。然後我們要向qtreewidget新增qtreewidgetitem。qtreewidgetitem有九個過載的建構函式。我們在這裡只是來看看其中的乙個,其餘的請自行查閱api文件。這個建構函式的簽名如下:
qtreewidgetitem::qtreewidgetitem ( qtreewidget * parent, const qstringlist & strings, int type = type );
這裡有3個引數,第乙個引數用於指定這個item屬於哪乙個樹;第二個引數是指定這個item顯示的文字;第三個引數用於指定這個item的型別。type有兩個可行的取值:qtreewidgetitem::type和qtreewidgetitem::usertype,由於我們並沒有定義使用者型別,所以只使用其預設值即可。這裡你會奇怪,第二個引數為什麼是乙個qstringlist型別的,而不是qstring型別的?我們先不去管它,繼續下面的**。
後面我們又建立了乙個qtreewidgetitem,注意它的第乙個引數不是qtreewidget而是qtreewidgetitem型別的,這就把它的父節點設定為前面我們定義的root了。然後我們使用了setcheckstate()函式,讓它變得可以選擇,最後使用 addchild()函式把它新增進來。
最後一步,我們建立了乙個qlist型別,前面的root新增進去,然後insert到top items。這裡可以想象到,由於這個樹元件可以由多個根組成(嚴格來說這已經不是樹了,不過姑且還是叫樹吧),所以我們傳進來的是乙個list。
好了,編譯執行一下我們的**吧!
樣子同我們想象的基本一致,只是這個樹的頭上怎麼會有乙個1?還記得我們跳過去的那個函式嗎?下面我們修改一下**看看:
#include "listwidget.h"
treewidget::treewidget()
我們把columncount設為2,然後傳入的qstringlist對應的有2個元素。這樣再來執行一下:
原來這個columncount就是用於在列表中顯示樹的!這樣,你就可以很容易的將樹和列表結合在一起,從而實現類似windows資源管理器的介面。當然,如果你不需要顯示這個header,可以呼叫setheaderhidden()函式將這個功能隱藏掉。
QT QTreeWidget控制項使用方法
最終實現的效果 建立qtreewidget控制項,新增父節點,父節點下新增子節點,通過核取方塊進行選擇。初始化控制項函式 void mainwindow init 1.槽函式 public slots void treecheck qtreewidgetitem item,int column 與i...
樹形DP 樹形DP四例
是時候練一下dp了!我的題單 portkey f u,if fu,i 表示以u uu為根節點的子樹中保留i ii條樹枝的最大蘋果數 f u,i max f max f fu,i max這些題是菜,但也不能輕視啊!include using namespace std define in read i...
樹形操作1 樹形拖拽選擇
樹形運算元據,做個整理總結。本篇是關於樹節點拖拽選擇,重新生成一棵新樹,並支援刪除節點。demo 是基於 jquery 及 easy ui 庫實現的。截圖 利用 css3 實現。主要運用了 before,after選擇器 畫 了兩個圓,然後利用border進行圓的調整,最後利用animation及t...