我正在使用QListWidget来存储运行后台进程的标签:
// process starts
ui->runningProcesses->addItem("Process: "+processID);
这仅供显示。用户不选择项目或以其他方式与列表框交互。后台进程完成后,我想删除相应的列表框项。我试过了:
delete ui->runningProcesses->takeItem(ui->runningProcesses->findItems("Process:"+processID,Qt::MatchExactly) );
但它的语法无效。最好的方法是什么?
答案 0 :(得分:0)
QListWidget::findItems
返回QList<QListWidgetItem*>
。您无法删除列表,您需要遍历列表并删除其中的每个项目。
请注意,除非您愿意使用返回的QListWidget::takeItem
执行其他操作,否则无需使用QListWidgetItem
。
如果您的目的是从列表中删除项目的行,则只需delete
即可。正如docs:
auto itemsToRemove= listWidget.findItems("Process: 7", Qt::MatchExactly);
for(auto item : itemsToRemove) delete item;