引用
#include"QDebug"
#include"QTreeView"
#include"QStandardItemModel"
#include"QPushButton"
#include"QItemSelectionModel"
#include"QModelIndex"
#include"QStandardItem"
代码
this->resize(1000,1000);
//创建树
QTreeView *treeView=new QTreeView(this);
treeView->resize(800,800);
treeView->move(100,100);
QStandardItemModel *model=new QStandardItemModel(treeView);
treeView->setModel(model);
//model->setHorizontalHeaderLabels(QStringList()<<QStringLiteral("项目名")<<QStringLiteral("相关信息1")<<QStringLiteral("相关信息2"));
//model->setVerticalHeaderLabels(QStringList()<<QStringLiteral("项目名")<<QStringLiteral("相关信息1")<<QStringLiteral("相关信息2"));
QStandardItem * item = new QStandardItem(tr("item one"));//创建一个条目对象
model->appendRow(item);
//去掉表头
treeView->setHeaderHidden(true);
//利用QList<QStandardItem*>添加节点
QList itemList1;
QList itemList2;
QStandardItem * item1 = new QStandardItem(tr("item one"));//创建一个条目对象
itemList1.append(item1);
QStandardItem * item2 = new QStandardItem(tr("item two"));//创建一个条目对象
itemList1.append(item2);
QStandardItem * item3 = new QStandardItem(tr("item three"));//创建一个条目对象
// item.push_back(item3);
QStandardItem * item4 = new QStandardItem(tr("item four"));//创建一个条目对象
// item.push_back(item4);
QStandardItem * item5 = new QStandardItem(tr("item five"));//创建一个条目对象
QStandardItem * item6 = new QStandardItem(tr("item five"));//创建一个条目对象
itemList2<
model->appendRow(item3);
model->appendRow(item4);
//model->setItem(1,new QStandardItem("123"));
item3->appendRows(itemList1);
item2->appendRows(itemList2);
//item->setChild(0,new QStandardItem("456"));
//添加子节点
QPushButton *buttonAdd=new QPushButton(treeView);
buttonAdd->move(300,700);
buttonAdd->setText("添加");
QItemSelectionModel *currentModel=new QItemSelectionModel();
connect(buttonAdd,&QPushButton::clicked,this,[=](){
QStandardItem *currentModel=model->itemFromIndex(treeView->currentIndex());
if(model->rowCount()>0)
{
currentModel->appendRow(new QStandardItem("333"));
}
});
//删除子节点
QPushButton *buttonDel=new QPushButton(treeView);
buttonDel->move(500,700);
buttonDel->setText("删除");
connect(buttonDel,&QPushButton::clicked,this,[=](){
QStandardItem *currentModel=model->itemFromIndex(treeView->currentIndex());
qDebug()<<"treeView->currentIndex().row()"<currentIndex().row();
if(model->rowCount()>0)
{
if(currentModel->parent())
{
currentModel->parent()->removeRow(treeView->currentIndex().row());
}
else
{
model->removeRow(treeView->currentIndex().row());
qDebug()<rowCount();
}
}
});
//打开根节点
treeView->expand(model->indexFromItem(model->item(0)));