【Qt 學習筆記】Qt常用控件 | 多元素控件 | Tree Widget的說明及介紹


  • 博客主頁: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的使用(代碼示例)

  1. 在界面TreeView,和三個按鈕,以及一個輸入框,如下圖所示
    在這里插入圖片描述
  2. 使用代碼添加頂層元素
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);
}
  1. 編寫按鈕生成的槽函數
//添加到頂層元素 按鈕
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);}
}
  1. 運行結果,可以針對樹形結構進行編輯添加內容和刪除內容
    在這里插入圖片描述

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/10811.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/10811.shtml
英文地址,請注明出處:http://en.pswp.cn/web/10811.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python代碼實現TF-IDF

1、TF-IDF解釋 TF-IDF(Term frequency–inverse document frequency),中文翻譯就是詞頻 - 逆文檔頻率,是一種用來計算關鍵詞的傳統方法。 TF(Term Frequency):TF 的意思就是詞頻,是…

云計算的優勢與未來發展

隨著數字化轉型的蓬勃發展,云計算作為信息技術應用的基礎設施,逐漸成為企業的首選。云計算以其諸多優勢和未來發展趨勢,為企業帶來了更高效、靈活和創新的IT解決方案,助力企業實現數字化轉型和業務發展。 云計算的優勢 首先&…

C#中的隱式類型轉換和顯式類型轉換

在C#中,類型轉換分為隱式類型轉換(Implicit Type Conversion)和顯式類型轉換(Explicit Type Conversion),也稱為隱式轉換和強制轉換。 隱式類型轉換(Implicit Type Conversion) 隱…

SQL Server共享功能目錄顯示灰色無法自行選擇

SQL Server共享功能目錄顯示灰色無法自行調整 一、 將之前安裝SQL Server卸載干凈 二、 清空注冊表 1. 打開注冊表,winR,輸入regedit 2. 注冊表-》編輯-》查找,輸入C:\Program Files\Microsoft SQL Server\ 3. 注冊表-》編輯-》查找&#x…

算法小記(二分)

題目描述: 輸入 𝑛n 個不超過 109109 的單調不減的(就是后面的數字不小于前面的數字)非負整數 𝑎1,𝑎2,…,𝑎𝑛a1?,a2?,…,an?,然后進行 𝑚m 次詢問。對于每次詢問&a…

docker+nginx+Jenkins自動構建

文章目錄 前言一、實操記錄問下AI:jenkins 配置新增一個mobilegit配置Build TriggersBuild EnvironmentBuild StepsPost-build Actions 上面一頓配置下來,構建 -- FAILURE 總結 前言 在已有docker-Jenkins-nginx 部署方案上,在另外一臺測試…

C++實現一個簡單的控制cpu利用率的程序

寫一個程序&#xff0c;讓控制cpu利用率在20%左右 思路很簡單&#xff1a;每個循環控制sleep的時間占比 #include <iostream> #include <chrono> #include <unistd.h>int main() {int ratio 20;int base_time 1000;int sleeptime base_time * (100-ratio…

【計算機網絡篇】數據鏈路層(10)在物理層擴展以太網

文章目錄 &#x1f354;擴展站點與集線器之間的距離&#x1f6f8;擴展共享式以太網的覆蓋范圍和站點數量 &#x1f354;擴展站點與集線器之間的距離 &#x1f6f8;擴展共享式以太網的覆蓋范圍和站點數量 以太網集線器一般具有8~32個接口&#xff0c;如果要連接的站點數量超過了…

10分鐘入門pandas(一)

pandas 是基于python語言的數據分析處理庫,使用廣泛。本文主要參考pandas的官方入門指導,并結合自己入門使用的一些常用操作進行說明。 pandas通常和numpy結合使用,一般通過如下語句導入numpy和pandas庫。 import numpy as np import pandas as pd一. pandas 數據結構 pan…

基于SSM的計算機課程實驗管理系統的設計與實現(源碼)

| 博主介紹&#xff1a;?程序員徐師兄、8年大廠程序員經歷。全網粉絲15w、csdn博客專家、掘金/華為云/阿里云/InfoQ等平臺優質作者、專注于Java技術領域和畢業項目實戰? &#x1f345;文末獲取源碼聯系&#x1f345; &#x1f447;&#x1f3fb; 精彩專欄推薦訂閱&#x1f44…

大屏分辨率適配插件v-scale-screen

前言&#xff1a;大屏分辨率適配繁多&#xff0c;目前我認為最簡單且問題最少的的方案就是使用v-scale-screen插件&#xff0c;無需考慮單位轉換&#xff0c;position定位也正常使用。 1. 效果 填充滿屏幕的效果 保持寬高比的效果 2. 插件原理 原理是通過css transfom 實現…

macOS12安裝 php8.1和apache

1. 安裝php 8.1 macOS12不再自帶php brew tap shivammathur/php 查看可安裝版本 brew search php 安裝指定版本 brew install php8.1 環境配置 vim ~/.zshrc export PATH"/usr/local/opt/php8.1/bin:$PATH" export PATH"/usr/local/opt/php8.1/sbin:$PAT…

[C#] 使用HttpClient請求https地址報錯的解決方案

當使用HttpClient請求HTTPS地址遇到報錯時&#xff0c;下面將解析并提供可能的解決方案供參考。 文章目錄 異常代碼無法定位錯誤的準確定位錯誤的 常見錯誤錯誤1錯誤2 解決問題生產環境開發環境 異常代碼 首先&#xff0c;需要查看引發異常的代碼部分, 無法定位錯誤的 以下代…

Android Compose 一:基礎控件

Flutter 與 Compose 組件辣么像&#xff0c;難道是同一個google團隊整的&#xff1b;也未深究&#xff0c;只是猜測。 創建項目 需要使用新版本Android studio&#xff0c;忽略步驟… 項目目錄 MainActivity說明 1 系統默認頁面 Preview 修飾的方法&#xff0c;只用來供開發…

VUE.JS詳細的使用方法

Vue.js是一個輕量級的前端JavaScript框架&#xff0c;它用于構建用戶界面和單頁應用。以下是Vue.js的基本使用方法和幫助。 安裝Vue.js 使用npm: npm install vue使用CDN: <script src"https://cdn.jsdelivr.net/npm/vue2.6.14/dist/vue.min.js"></script&…

撤銷 git add 操作(忽略被追蹤的文件)

文章目錄 引言I git rm命令來取消暫存【推薦】II 撤銷特定文件的暫存狀態2.1 git rese2.2 git restoresee also引言 應用場景: 修改.gitignoregitignore只能忽略那些原來沒有被追蹤的文件,如果某些文件已經被納入了版本管理中,則修改.gitignore是無效的。那么解決方法就是先…

Kruskal算法刷題筆記

理論基礎&#xff1a; 例題&#xff1a; 卡碼網---53&#xff1a;尋寶 題目 題目描述 在世界的某個區域&#xff0c;有一些分散的神秘島嶼&#xff0c;每個島嶼上都有一種珍稀的資源或者寶藏。國王打算在這些島嶼上建公路&#xff0c;方便運輸。 不同島嶼之間&#xff0c…

精選多個炫酷的數據可視化大屏(含源碼),拿走就用~

末尾有鏈接 演示地址&#xff1a;可視化大數據展示中心 (null.fit) 可視化大數據展示模板-科技語者 (chgskj.cn)

block性能考慮和線程安全

性能考慮 頻繁地創建和銷毀大量的 block 可能會對性能造成影響&#xff0c;特別是當這些 block 被拷貝到堆上時。同時&#xff0c;block 捕獲大量數據時也會增加內存使用。 在討論性能考慮時&#xff0c;主要關注的是 block 的創建、拷貝到堆上以及捕獲變量的成本。以下是針對…

【Java】:方法重寫、動態綁定和多態

目錄 一個生動形象的例子 場景設定 1. 方法重寫&#xff08;Method Overriding&#xff09; 2. 動態綁定&#xff08;Dynamic Binding&#xff09; 3. 多態&#xff08;Polymorphism&#xff09; 歸納關系&#xff1a; 重寫 概念 條件 重寫的示例 重載與重寫的區別 …