1、QTreeWidget繼承自QTreeView.
2、頭文件:QTreeWidget
3、簡單使用:
#include "mainwindow.h" #include <QApplication> #include <QTreeWidget> #include <QTreeWidgetItem> int main(int argc, char *argv[]) { QApplication a(argc, argv); QTreeWidget tree; tree.setColumnCount(1); tree.setHeaderLabel(QString("Tree HeaderLabel")); QTreeWidgetItem *root = new QTreeWidgetItem(&tree,QStringList(QString("Root node"))); new QTreeWidgetItem(root,QStringList(QString("item1"))); QTreeWidgetItem *item2 = new QTreeWidgetItem(root,QStringList(QString("item2"))); item2->setCheckState(0,Qt::Checked); QList<QTreeWidgetItem *> items; items<<root; tree.insertTopLevelItems(0,items); tree.show(); return a.exec(); }

QTreeWidgetItem(QTreeWidget *parent, const QStringList &strings, int type = Type);
其中有上面一行的構造函數。第一個參數用於指定這個項屬於哪個樹。
代碼首先添加了第一個葉節點,之后又添加一個,而這個則設置了可選標記。最后,我們將這個 root 添加到一個
QTreeWidgetItem的列表,作為 QTreeWidget 的數據項。此時你應該想到,既然
QTreeWidget 接受 QList 作為項的數據,它就能夠支持多棵樹的一起顯示,而不僅僅是單
根樹。
修改部分代碼:
#include "mainwindow.h" #include <QApplication> #include <QTreeWidget> #include <QTreeWidgetItem> int main(int argc, char *argv[]) { QApplication a(argc, argv); QTreeWidget tree; //tree.setColumnCount(1); //tree.setHeaderLabel(QString("Tree HeaderLabel")); QStringList headers; headers<<"Name"<<"Number"; tree.setHeaderLabels(headers); QStringList rootText; rootText<<"Root Node"<<"this is a text"; //QTreeWidgetItem *root = new QTreeWidgetItem(&tree,QStringList(QString("Root node"))); QTreeWidgetItem *root = new QTreeWidgetItem(&tree,rootText); new QTreeWidgetItem(root,QStringList(QString("item1"))); QTreeWidgetItem *item2 = new QTreeWidgetItem(root,QStringList(QString("item2"))); item2->setCheckState(0,Qt::Checked); QList<QTreeWidgetItem *> items; items<<root; tree.insertTopLevelItems(0,items); tree.show(); return a.exec(); }
運行效果:

這次我們沒有使用 setColumnCount(),而是直接使用 QStringList 設置了 headers,也就
是樹的表頭。接下來我們使用的還是 QStringList 設置數據。這樣,我們實現的是帶有層次
結構的樹狀表格。利用這一屬性,我們可以比較簡單地實現類似 Windows 資源管理器的界
面。
如果你不需要顯示這個表頭,可以調用 setHeaderHidden()函數將其隱藏。

