项目删除后QTreeWidget中的空行

时间:2014-10-10 22:24:18

标签: c++ qt qt-creator

我用Qt Creator创建了一个QTreeWidget并填充它。

当我从树中删除一个项目时,空行向下移动到树的末尾。 当我然后添加到树中时,该项添加在空行下方。

我如何摆脱这条空行?

图片:http://picpaste.com/gpa-GNtd84Ev.PNG

void Gpa::on_removeButton_clicked()
{
    QTreeWidgetItem *item = new QTreeWidgetItem(ui->treeWidget);

    item = ui->treeWidget->currentItem();
    QString txt = item->text(0);

   //search vector for item
    int i;
    for(i = 0; i < vec.size(); i++)
        if(vec.at(i)->getCode() == txt)
            break;
    vec.erase(vec.begin() + i);

    int index = ui->treeWidget->indexOfTopLevelItem(item);
    ui->treeWidget->takeTopLevelItem(index);
}

1 个答案:

答案 0 :(得分:0)

如果要移除顶级项目,则应该查看此方法:

QTreeWidgetItem * QTreeWidget::takeTopLevelItem ( int index )

否则,如果您要移除一个孩子,您应该获得指向顶级项目(或顶级项目的孩子)的指针并使用:

QTreeWidgetItem * QTreeWidgetItem::takeChild ( int index )

编辑(在OP发布他的代码之后)

我认为问题出在这里:

QTreeWidgetItem *item = new QTreeWidgetItem(ui->treeWidget);

item = ui->treeWidget->currentItem();

您正在分配新的QTreeWidgetItem,然后将要删除的项目分配给该指针。所以基本上,你正在创建一个新的空项目,你删除旧的项目。尝试将您的代码更改为:

QTreeWidgetItem *item;

item = ui->treeWidget->currentItem();