从listWidget中删除所选项目

Lio*_*ing 20 c++ qt qlistwidget qt5

如何从中删除所选项目qlistWidget.

我尝试编写以下代码,但不起作用.

QList<QListWidgetItem*> items = ui->listWidget->selectedItems();
foreach(QListWidgetItem item, items){
    ui->listWidget->removeItemWidget(item);
}
Run Code Online (Sandbox Code Playgroud)

现在,如何删除我从中选择的项目qlistWidget

Nej*_*jat 29

删除项目的一种方法QListWidget是使用QListWidget::takeItem删除和返回项目的方法:

QList<QListWidgetItem*> items = ui->listWidget->selectedItems();
foreach(QListWidgetItem * item, items)
{
    delete ui->listWidget->takeItem(ui->listWidget->row(item));
}
Run Code Online (Sandbox Code Playgroud)

另一种方式是qDeleteAll:

qDeleteAll(ui->listWidget->selectedItems());
Run Code Online (Sandbox Code Playgroud)

  • @ Youda008`removeItemWidget`仅删除项目上的小部件集.要删除整行,您应该使用`takeItem`并删除它以释放内存.请参阅:http://doc.qt.io/qt-5/qlistwidget.html#removeItemWidget (3认同)

gli*_*ihm 5

removeItemWidget以下方法给出解决方案:

QList<QListWidgetItem*> items = ui->listWidget->selectedItems();

foreach(QListWidgetItem* item, items){
    ui->listWidget->removeItemWidget(item);
    delete item; // Qt documentation warnings you to destroy item to effectively remove it from QListWidget.
}
Run Code Online (Sandbox Code Playgroud)