QT學習筆記之QTreeWidget的增與刪


寫在前面

在實際的應用中,樹形結構還是用的比較多的,比如安裝目錄的選擇、查看部門的結構等等。所以學好屬性結構還是大有裨益的。

增與刪

下面是添加的功能:

//這是添加根節點的功能實現
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;
}

刪除節點時記得循環刪除這個節點下面的所有的子節點。

源碼上傳:http://download.csdn.net/detail/pkgk2013/9841470


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM