Qt開發(fā)之QTreeWidget的使用教程詳解
更新時間:2022年12月01日 09:36:28 作者:音視頻開發(fā)老舅
這篇文章主要為大家詳細介紹了Qt中QTreeWidget使用的相關資料,文中的示例代碼講解詳細,對我們學習Qt有一定的幫助,感興趣的小伙伴可以了解一下
一.常用API設置
1.添加頂層節(jié)點
//添加頂層節(jié)點 QTreeWidgetItem *topItem1 = new QTreeWidgetItem(ui->treeWidget); topItem1->setText(0,"百度"); ui->treeWidget->addTopLevelItem(topItem1);
2.設置表頭隱藏,展開所有項
//隱藏表頭 ui->treeWidget->setHeaderHidden(true); //設置展開 ui->treeWidget->expandAll();
3.頂層節(jié)點添加子節(jié)點
QTreeWidgetItem *item11 = new QTreeWidgetItem(topItem1); item11->setText(0,"研發(fā)部"); QTreeWidgetItem *item12 = new QTreeWidgetItem(topItem1); item12->setText(0,"銷售部"); QTreeWidgetItem *item13 = new QTreeWidgetItem(topItem1); item13->setText(0,"人事部");
4.節(jié)點可以帶一些數(shù)據,使用setData()這個接口
//設置數(shù)據,可以帶多種數(shù)據 item11->setData(0,Qt::UserRole,100/*人員數(shù)量*/); item11->setData(0,Qt::UserRole+1,"李彥宏"/*負責人名字*/); //獲得數(shù)據 item11->data(0,Qt::UserRole).toInt(); item11->data(0,Qt::UserRole+1).toString();
5.節(jié)點可以設置自定義類型,設置圖標、flags、文本
//自定義枚舉 enum NodeType { ROOT = 0, SON }; QTreeWidgetItem *item = new QTreeWidgetItem(ROOT); //item->setIcon(); //item->setText(); //item->setFlags();
二.設置帶checkBox
QTreeWidgetItem *topItem2 = new QTreeWidgetItem(ui->treeWidget); topItem2->setText(0,"騰訊"); topItem2->setCheckState(0,Qt::Checked); ui->treeWidget->addTopLevelItem(topItem2); QTreeWidgetItem *item21 = new QTreeWidgetItem(topItem2); item21->setText(0,"研發(fā)部"); item21->setCheckState(0,Qt::Checked); QTreeWidgetItem *item22 = new QTreeWidgetItem(topItem2); item22->setText(0,"銷售部"); item22->setCheckState(0,Qt::Checked); QTreeWidgetItem *item23 = new QTreeWidgetItem(topItem2); item23->setText(0,"人事部"); item23->setCheckState(0,Qt::Checked);
簡單的響應一下點擊信號,當頂層節(jié)點選中,下面的所有子節(jié)點全選中
connect(ui->treeWidget,&QTreeWidget::itemClicked,this, &Form::slotClicked); void Form::slotClicked(QTreeWidgetItem *item, int column) { //簡單響應一下選中狀態(tài)槽函數(shù) for (int i=0; i<item->childCount(); i++) { QTreeWidgetItem *pChildItem = item->child(i); pChildItem->setCheckState(0,item->checkState(0)); } }
三.右鍵菜單
//打開右鍵菜單屬性 ui->treeWidget->setContextMenuPolicy(Qt::CustomContextMenu); //右鍵菜單 m_menu = new QMenu(ui->treeWidget); m_menu->addAction("添加"); m_menu->addAction("刪除"); //響應右鍵菜單信號槽 connect(ui->treeWidget,&QTreeWidget::customContextMenuRequested, this,&Form::slotMenuPopup); void Form::slotMenuPopup(const QPoint &pos) { m_menu->exec(ui->treeWidget->mapToGlobal(pos)); }
四.設置qss
這里簡單設置一下背景色,展開/合并時的圖標,item的一些設置,僅供參考。
const QString styles = "QTreeView\ {\ background-color: #5B677A;\ font-size:17px;\ color: white;\ }\ QTreeView::item:hover\ {\ background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #e7effd, stop: 1 #cbdaf1);\ border: 1px solid #bfcde4;\ }\ QTreeView::item:hover\ {\ background: rgb(69, 187, 217);\ }\ QTreeView::item:selected:active\ {\ background: rgb(63, 147, 168);\ }\ QTreeView::item:selected:!active\ {\ background: rgb(63, 147, 168);\ }\ QTreeView::branch\ {\ background:#5B677A;\ }\ QTreeView::branch:has-children:!has-siblings:closed,QTreeView::branch:closed:has-children:has-siblings\ {\ border-image: none;\ background:#5B677A;\ image: url(image/Folder-1.png);\ }\ QTreeView::branch:open:has-children:!has-siblings,QTreeView::branch:open:has-children:has-siblings\ {\ border-image: none;\ background:#5B677A;\ image: url(image/Open-Folder.png);\ }";
調用ui->treeWidget->setStyleSheet(styles);就行了
五.運行效果
六.多列樹
#include "widget.h" #include "ui_widget.h" #include <QDebug> const QString sstyle = "\ QHeaderView::section\ {\ background-color: white;\ }"; Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); QStringList strList; strList<<"名稱"<<"年齡"<<"性別"; ui->treeWidget->setHeaderLabels(strList); ui->treeWidget->header()->setStyleSheet(sstyle); QTreeWidgetItem *item1 = new QTreeWidgetItem(QStringList()<<"七年級"); ui->treeWidget->addTopLevelItem(item1); QTreeWidgetItem *item11 = new QTreeWidgetItem(QStringList()<<"小漲"<<"13"<<"男"); item1->addChild(item11); QTreeWidgetItem *item12 = new QTreeWidgetItem(QStringList()<<"小紅"<<"14"<<"女"); item1->addChild(item12); QTreeWidgetItem *item13 = new QTreeWidgetItem(QStringList()<<"小麗"<<"13"<<"女"); item1->addChild(item13); QTreeWidgetItem *item2 = new QTreeWidgetItem(QStringList()<<"八年級"); ui->treeWidget->addTopLevelItem(item2); QTreeWidgetItem *item21 = new QTreeWidgetItem(QStringList()<<"小漲"<<"13"<<"男"); item2->addChild(item21); QTreeWidgetItem *item22 = new QTreeWidgetItem(QStringList()<<"小紅"<<"14"<<"女"); item2->addChild(item22); QTreeWidgetItem *item23 = new QTreeWidgetItem(QStringList()<<"小麗"<<"13"<<"女"); item2->addChild(item23); QTreeWidgetItem *item3 = new QTreeWidgetItem(QStringList()<<"九年級"); ui->treeWidget->addTopLevelItem(item3); QTreeWidgetItem *item31 = new QTreeWidgetItem(QStringList()<<"小漲"<<"13"<<"男"); item3->addChild(item31); QTreeWidgetItem *item32 = new QTreeWidgetItem(QStringList()<<"小紅"<<"14"<<"女"); item3->addChild(item32); QTreeWidgetItem *item33 = new QTreeWidgetItem(QStringList()<<"小麗"<<"13"<<"女"); item3->addChild(item33); } Widget::~Widget() { delete ui; } void Widget::on_treeWidget_itemClicked(QTreeWidgetItem *item, int column) { qDebug()<<item->text(0); qDebug()<<item->text(1); qDebug()<<item->text(2); }
到此這篇關于Qt開發(fā)之QTreeWidget的使用教程詳解的文章就介紹到這了,更多相關Qt QTreeWidget內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
C++實現(xiàn)LeetCode(98.驗證二叉搜索樹)
這篇文章主要介紹了C++實現(xiàn)LeetCode(98.驗證二叉搜索樹),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下2021-07-07