按值删除 ListWidget 项
Delete ListWidget item by value
我正在使用 QListWidget 为 运行 后台进程存储标签:
// process starts
ui->runningProcesses->addItem("Process: "+processID);
这仅供展示。用户不 select 项目或以其他方式与列表框交互。当后台进程完成时,我想删除相应的列表框项目。我试过了:
delete ui->runningProcesses->takeItem(ui->runningProcesses->findItems("Process:"+processID,Qt::MatchExactly) );
但它是无效语法。执行此操作的最佳方法是什么?
QListWidget::findItems
returns一个QList<QListWidgetItem*>
。无法删除列表,需要遍历列表,删除其中的每一项。
请注意,没有必要使用 QListWidget::takeItem
除非你愿意用返回的 QListWidgetItem
做另一件事。
如果您的目标只是从列表中删除项目所在的行,则只需 delete
即可。如 docs 中所述:
auto itemsToRemove= listWidget.findItems("Process: 7", Qt::MatchExactly);
for(auto item : itemsToRemove) delete item;
我正在使用 QListWidget 为 运行 后台进程存储标签:
// process starts
ui->runningProcesses->addItem("Process: "+processID);
这仅供展示。用户不 select 项目或以其他方式与列表框交互。当后台进程完成时,我想删除相应的列表框项目。我试过了:
delete ui->runningProcesses->takeItem(ui->runningProcesses->findItems("Process:"+processID,Qt::MatchExactly) );
但它是无效语法。执行此操作的最佳方法是什么?
QListWidget::findItems
returns一个QList<QListWidgetItem*>
。无法删除列表,需要遍历列表,删除其中的每一项。
请注意,没有必要使用 QListWidget::takeItem
除非你愿意用返回的 QListWidgetItem
做另一件事。
如果您的目标只是从列表中删除项目所在的行,则只需 delete
即可。如 docs 中所述:
auto itemsToRemove= listWidget.findItems("Process: 7", Qt::MatchExactly);
for(auto item : itemsToRemove) delete item;