我用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);
}
答案 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();