網(wǎng)站首頁 編程語言 正文
一.常用API設(shè)置
1.添加頂層節(jié)點(diǎn)
//添加頂層節(jié)點(diǎn)
QTreeWidgetItem *topItem1 = new QTreeWidgetItem(ui->treeWidget);
topItem1->setText(0,"百度");
ui->treeWidget->addTopLevelItem(topItem1);
2.設(shè)置表頭隱藏,展開所有項(xiàng)
//隱藏表頭
ui->treeWidget->setHeaderHidden(true);
//設(shè)置展開
ui->treeWidget->expandAll();
3.頂層節(jié)點(diǎn)添加子節(jié)點(diǎn)
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é)點(diǎn)可以帶一些數(shù)據(jù),使用setData()這個接口
//設(shè)置數(shù)據(jù),可以帶多種數(shù)據(jù)
item11->setData(0,Qt::UserRole,100/*人員數(shù)量*/);
item11->setData(0,Qt::UserRole+1,"李彥宏"/*負(fù)責(zé)人名字*/);
//獲得數(shù)據(jù)
item11->data(0,Qt::UserRole).toInt();
item11->data(0,Qt::UserRole+1).toString();
5.節(jié)點(diǎn)可以設(shè)置自定義類型,設(shè)置圖標(biāo)、flags、文本
//自定義枚舉
enum NodeType
{
ROOT = 0,
SON
};
QTreeWidgetItem *item = new QTreeWidgetItem(ROOT);
//item->setIcon();
//item->setText();
//item->setFlags();
二.設(shè)置帶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);
簡單的響應(yīng)一下點(diǎn)擊信號,當(dāng)頂層節(jié)點(diǎn)選中,下面的所有子節(jié)點(diǎn)全選中
connect(ui->treeWidget,&QTreeWidget::itemClicked,this,
&Form::slotClicked);
void Form::slotClicked(QTreeWidgetItem *item, int column)
{
//簡單響應(yīng)一下選中狀態(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("刪除");
//響應(yīng)右鍵菜單信號槽
connect(ui->treeWidget,&QTreeWidget::customContextMenuRequested,
this,&Form::slotMenuPopup);
void Form::slotMenuPopup(const QPoint &pos)
{
m_menu->exec(ui->treeWidget->mapToGlobal(pos));
}
四.設(shè)置qss
這里簡單設(shè)置一下背景色,展開/合并時的圖標(biāo),item的一些設(shè)置,僅供參考。
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);\
}";
調(diào)用ui->treeWidget->setStyleSheet(styles);就行了
五.運(yùn)行效果
六.多列樹
#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);
}
原文鏈接:https://blog.csdn.net/m0_60259116/article/details/128121957
相關(guān)推薦
- 2022-08-15 Python包裝之對象處理_python
- 2022-03-04 運(yùn)行 npm 會彈出詢問 “你要如何打開這個文件?“
- 2022-10-29 go語言打包的網(wǎng)頁wasm示例詳解_Golang
- 2022-12-21 QT+Quick實(shí)現(xiàn)自定義組件的示例詳解_C 語言
- 2023-01-28 深入分析Python中Lambda函數(shù)的用法_python
- 2022-12-14 Jetpack?Compose重寫TopAppBar實(shí)現(xiàn)標(biāo)題多行折疊詳解_Android
- 2022-06-26 python數(shù)據(jù)處理之Pandas類型轉(zhuǎn)換的實(shí)現(xiàn)_python
- 2022-07-30 一文掌握Python正則表達(dá)式_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支