首页 文章

按值删除ListWidget项

提问于
浏览
0

我正在使用QListWidget来存储运行后台进程的标签:

// process starts
 ui->runningProcesses->addItem("Process: "+processID);

这仅供显示 . 用户不选择项目或以其他方式与列表框交互 . 后台进程完成后,我想删除相应的列表框项 . 我试过了:

delete ui->runningProcesses->takeItem(ui->runningProcesses->findItems("Process:"+processID,Qt::MatchExactly) );

但这是无效的语法 . 最好的方法是什么?

1 回答

  • 0

    QListWidget::findItems返回 QList<QListWidgetItem*> . 您无法删除列表,您需要遍历列表并删除其中的每个项目 .

    请注意,除非您愿意使用返回的 QListWidgetItem 做另一件事,否则无需使用 QListWidget::takeItem .

    如果你的目标只是从列表中删除项目的行,你只需要 delete 它 . 如_2817187中所述:

    auto itemsToRemove= listWidget.findItems("Process: 7", Qt::MatchExactly);
    for(auto item : itemsToRemove) delete item;
    

相关问题