- 博客主頁:Duck Bro 博客主頁
- 系列專欄:Qt 專欄
- 關注博主,后期持續更新系列文章
- 如果有錯誤感謝請大家批評指出,及時修改
- 感謝大家點贊👍收藏?評論?
Qt常用控件 | 多元素控件 | Tree Widget的說明及介紹
文章編號:Qt 學習筆記 / 38
文章目錄
- Qt常用控件 | 多元素控件 | Tree Widget的說明及介紹
- 一、QTreeWidget介紹
- 1. 簡介
- 2. 核心方法
- 3. 核心信號
- 二、QTreeWidgetItem介紹
- 1. 簡介
- 2. 核心屬性
- 3. 核心方法
- 三、QTreeWidget的使用(代碼示例)
一、QTreeWidget介紹
1. 簡介
QTreeWidget是Qt中的一個可視化控件,用于顯示樹形結構的數據。它是QTreeView的衍生類,提供了更直觀易用的API來構建和管理樹形結構。
QTreeWidget可用于顯示和編輯樹狀結構的數據,每個節點可以包含一個或多個子節點。每個節點以一個圖標和一個文本標簽來標識,用戶可以通過展開或折疊節點來顯示或隱藏子節點。
2. 核心方法
方法 | 說明 |
---|---|
clear | 清空所有子節點 |
addTopLevelItem(QTreeWidgetItem* item) | 新增頂層節點 |
topLevelItem(int index) | 獲取指定下標的頂層節點. |
topLevelItemCount() | 獲取頂層節點個數 |
indexOfTopLevelItem(QTreeWidgetItem* item) | 查詢指定節點是頂層節點中的下標 |
takeTopLevelItem(int index) | 刪除指定的頂層節點. 返回 QTreeWidgetItem* 表?被刪除的元素 |
currentItem() | 獲取到當前選中的節點, 返回 QTreeWidgetItem* |
setCurrentItem(QTreeWidgetItem* item) | 選中指定節點 |
setExpanded(bool) | 展開/關閉節點 |
setHeaderLabel(const QString& text) | 設置 TreeWidget 的 header 名稱. |
3. 核心信號
信號 | 說明 |
---|---|
currentItemChanged(QTreeWidgetItem* current, QTreeWidgetItem* old) | 切換選中元素時觸發 |
itemClicked(QTreeWidgetItem* item, int col) | 點擊元素時觸發 |
itemDoubleClicked(QTreeWidgetItem* item, int col) | 雙擊元素時觸發 |
itemEntered(QTreeWidgetItem* item, int col) | 鼠標進入時觸發 |
itemExpanded(QTreeWidgetItem* item) | 元素被展開時觸發 |
itemCollapsend(QTreeWidgetItem* item) | 元素被折疊時觸發 |
二、QTreeWidgetItem介紹
1. 簡介
QTreeWidgetItem是Qt框架中的一個類,用于在樹形結構中表示節點。它可以用于創建樹狀的視圖,比如樹狀菜單、文件瀏覽器等。
QTreeWidgetItem類提供了一些方法和屬性,用于設置節點的文本、圖標、狀態等。每個節點都可以有子節點,通過添加子節點來構建樹的層次結構。節點的層次關系可以通過父節點和子節點的指針來管理。
2. 核心屬性
屬性 | 說明 |
---|---|
text | 持有的文本 |
textAlignment | 文本對齊方式 |
icon | 持有的圖表 |
font | 文本字體 |
hidden | 是否隱藏 |
disabled | 是否禁用 |
expand | 是否展開 |
sizeHint | 尺?大小 |
selected | 是否選中 |
3. 核心方法
方法 | 說明 |
---|---|
addChild(QTreeWidgetItem* child) | 新增子節點 |
childCount() | 子節點的個數 |
child(int index) | 獲取指定下標的子節點. 返回 QTreeWidgetItem* |
takeChild(int index) | 刪除對應下標的子節點 |
removeChild(QTreeWidgetItem* child) | 刪除對應的子節點 |
parent() | 獲取該元素的父節點 |
三、QTreeWidget的使用(代碼示例)
- 在界面TreeView,和三個按鈕,以及一個輸入框,如下圖所示
- 使用代碼添加頂層元素
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//修改根節點名稱ui->treeWidget->setHeaderLabel("飲品");//添加頂層元素QTreeWidgetItem * item = new QTreeWidgetItem();//設置頂層元素的名稱item->setText(0,"碳酸飲料");//添加到頂層節點中ui->treeWidget->addTopLevelItem(item);//添加頂層元素QTreeWidgetItem * item2 = new QTreeWidgetItem();//設置頂層元素的名稱item2->setText(0,"奶茶");//添加到頂層節點中ui->treeWidget->addTopLevelItem(item2);//添加頂層元素QTreeWidgetItem * item3 = new QTreeWidgetItem();//設置頂層元素的名稱item3->setText(0,"果汁");//添加到頂層節點中ui->treeWidget->addTopLevelItem(item3);//添加子節點QTreeWidgetItem * item4 = new QTreeWidgetItem();//設置元素名稱item4->setText(0,"百事可樂");//添加到頂層節點下item->addChild(item4);//添加子節點QTreeWidgetItem * item5 = new QTreeWidgetItem();//設置元素名稱item5->setText(0,"雪碧");//添加到頂層節點下item->addChild(item5);
}
- 編寫按鈕生成的槽函數
//添加到頂層元素 按鈕
void Widget::on_pushButton_insertTopLevelItem_clicked()
{//獲取到LineEdit輸入框中的內容const QString& text = ui->lineEdit->text();//新增頂層節點QTreeWidgetItem * item = new QTreeWidgetItem();//設置頂層元素名稱item -> setText(0,text);//添加到頂層節點中ui->treeWidget->addTopLevelItem(item);
}//添加到選中元素 按鈕
void Widget::on_pushButton_insertItem_clicked()
{//獲取到輸入框內容const QString& text = ui->lineEdit->text();//獲取當前選中的節點QTreeWidgetItem * current= ui->treeWidget->currentItem();if(current == nullptr){return;}//新增節點QTreeWidgetItem * item = new QTreeWidgetItem();//設置元素名稱item -> setText(0,text);//添加到節點中current->addChild(item);
}//刪除選中的元素 按鈕
void Widget::on_pushButton_3_clicked()
{//獲取當前選中的節點QTreeWidgetItem * current= ui->treeWidget->currentItem();if(current == nullptr){return;}//獲取當前節點的父節點QTreeWidgetItem* parent = current->parent();if(parent ==nullptr){//頂層節點int index = ui->treeWidget->indexOfTopLevelItem(current);ui->treeWidget->takeTopLevelItem(index);}else{//非頂層節點parent->removeChild(current);}
}
- 運行結果,可以針對樹形結構進行編輯添加內容和刪除內容