treeWidget
QTreeWidget
核心方法
//清空所有子节点
clear()
//新增顶层节点
addTopLevelItem(QTreeWidgetItem* item);
//获取指定下标的顶层节点,返回值是一个QTreeWidgetItem对象
topLevelItem(int index);
//获取顶层节点的个数
topLevelItemCount();
//查询顶层节点的下标
indexOfTopLevelItem(QTreeWidgetItem* item);
//删除指定下标的顶层元素
takeTopLevelItem(int index);
//获取当前选中的元素
currentItem();
//选中指定元素
setCurrentItem(QTreeWidgetItem* item);
//展开关闭节点
setExpanded(bool);
//设置TreeWidget的名称
setHeaderLabel(const QString& text);
核心信号
//切换选中元素触发
currentItemChanged(QTreeWidgetItem* current, QTreeWidgetItem*old);
//点击元素触发
itemClicked(QTreeWidgetItem* item, int col);
itemDoubleClicked(QTreeWidgetItem* item, int col);
QTreeWidgetItem核心属性
text();
textAlignment();
icon();//图表
font();//字体
核心方法
addChild(QTreeWidgetItem* child);//新增子节点
childCount();//查询节点个数
child(int index);//获取指定下标的子节点,返回QTreeWidgetItem*
takeChild(int index);//删除指定下标的元素
removeChild(QTreeWidgetItem* item);
parent(QTreeWidgetItem* item)//获取钙元素的父节点
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//设置根节点的名字
ui->treeWidget->setHeaderLabel("动物");
//新增顶层节点
QTreeWidgetItem* item_1 = new QTreeWidgetItem();
item_1->setText(0, "猫");
//添加到顶层节点中
ui->treeWidget->addTopLevelItem(item_1);
QTreeWidgetItem* item_2 = new QTreeWidgetItem();
item_2->setText(0, "狗");
ui->treeWidget->addTopLevelItem(item_2);
QTreeWidgetItem* item_3 = new QTreeWidgetItem();
item_3->setText(0, "狐狸");
ui->treeWidget->addTopLevelItem(item_3);
//新增顶层节点
QTreeWidgetItem* item_4 = new QTreeWidgetItem();
item_4->setText(0, "鸟");
//添加到顶层节点中
ui->treeWidget->addTopLevelItem(item_4);
//添加子节点
//新增子节点
QTreeWidgetItem* item_5 = new QTreeWidgetItem();
item_5->setText(0, "梨花");
//添加到顶层节点中
item_1->addChild(item_5);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_add_clicked()
{
//获取输入框字符串
const QString& str = ui->lineEdit->text();
//新增一个顶层节点
QTreeWidgetItem* item = new QTreeWidgetItem();
item->setText(0, str);
//添加到顶层节点中
ui->treeWidget->addTopLevelItem(item);
}
void Widget::on_pushButton_3_clicked()
{
//获取输入框的值
const QString& str = ui->lineEdit->text();
//找到当前选中的节点
QTreeWidgetItem* current = ui->treeWidget->currentItem();
// 新增一个子节点
QTreeWidgetItem* item = new QTreeWidgetItem();
item->setText(0, str);
//添加子节点到节点中去
current->addChild(item);
}
void Widget::on_pushButton_remove_clicked()
{
//获取当前的节点
QTreeWidgetItem* current= ui->treeWidget->currentItem();
if(current == nullptr)
{
return;/
}
//ruguo 有父节点,就是普通节点,就找到它的父节点,然后删除,如果没有父节点,就是顶层节点,就直接用删除顶层节点的方式删除它
if(current->parent() == nullptr){
//顶层节点
int index = ui->treeWidget->indexOfTopLevelItem(current);
ui->treeWidget->takeTopLevelItem(index);
}
else{
//普通节点//
current->parent()->removeChild(current);
}
}