Qt學習之路 40 QTreeWidget

2021-06-08 01:30:00 字數 1798 閱讀 8042

本文出自 「豆子空間」 部落格,原文出處

接著前面的內容,今天要說的是另外乙個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學習之路

qt 學習之路 是在網路上受到一定歡迎的 qt 入門教程。只是這個系列便攜與 2009 年,至今已經有三年多的時間。今天的 qt 有了很大的變化,包括 qt quick 的加入 qt 底層架構的改變,更重要的是 qt 5 的發布。本系列文章將會是 qt 學習之路 的一次公升級和修訂,著重關注於 qt...

QT學習之路

qt學習之路2 目錄 1 序2 qt 前言 3 hello,world 4 訊號槽 5 自定義訊號槽 6 qt 模組簡介 7 mainwindow 簡介 8 新增動作 9 資源檔案 10 物件模型 11 布局管理器 12 選單欄 工具欄和狀態列 13 對話方塊簡介 14 對話方塊資料傳遞 15 標準...

Qt學習之路

多年前聽說過qt的大名,但所有的探索都是淺嘗輒止並未深入了解,2020年6月,一直困擾域mfc框架的繁瑣和對windows平台的限制,下定決心學習qt,替代一直使用的mfc框架進行開發。本系列的內容是以工程實踐為主,記錄 總結我在工作過程中使用qt時的內容,目標是盡快熟練的使用qt,文章內容更多的傾...