寫在前面
在實際的應用中,樹形結構還是用的比較多的,比如安裝目錄的選擇、查看部門的結構等等。所以學好屬性結構還是大有裨益的。
增與刪
下面是添加的功能:
//這是添加根節點的功能實現
this->connect(ui->Root_btn, SIGNAL(clicked(bool)), this, SLOT(addRoot()));
void Widget::addRoot()
{
QString one = ui->first->text();
QString two = ui->second->text();
QString three = ui->third->text();
QTreeWidgetItem* item = new QTreeWidgetItem();
item->setText(0, one);
item->setText(1, two);
item->setText(2, three);
ui->Tree->addTopLevelItem(item);
}
//這是添加葉子節點的實現
this->connect(ui->Child_btn, SIGNAL(clicked(bool)), this, SLOT(addChild()));
void Widget::addChild()
{
QString one = ui->first->text();
QString two = ui->second->text();
QString three = ui->third->text();
QTreeWidgetItem* parent = ui->Tree->currentItem();
QTreeWidgetItem* item = new QTreeWidgetItem();
item->setText(0, one);
item->setText(1, two);
item->setText(2, three);
parent->addChild(item);
}
添加葉子節點字需要注意父節點的獲取就可以了。
下面是刪除節點的功能:
this->connect(ui->DEL_btn, SIGNAL(clicked(bool)), this, SLOT(deleteNode()));
void del(QTreeWidgetItem* node)
{
if(node->childCount() > 0)
{
for(int i = 0; i < node->childCount(); i ++)
{
del(node->child(i));
}
}
else
{
delete node;
}
}
void Widget::deleteNode() { QTreeWidgetItem* item = ui->Tree->currentItem();
if(item->childCount() > 0)
{
for(int i = 0; i < item->childCount(); i ++)
{
del(item->child(i));
}
}
delete item;
}
刪除節點時記得循環刪除這個節點下面的所有的子節點。