2016-12-11 28 views
0

Я использую QListWidget для хранения ярлыков для запуска фоновых процессов:Удалить ListWidget элемент по значению

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

Это только для отображения. Пользователь не выбирает элементы или иным образом взаимодействует со списком. Когда фоновый процесс завершен, я хотел бы удалить соответствующий элемент списка. Я пробовал:

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

Но это недопустимый синтаксис. Какой был бы лучший способ сделать это?

ответ

0

QListWidget::findItems возвращает QList<QListWidgetItem*>. Вы не можете удалить список, вам нужно выполнить итерацию по списку и удалить каждый элемент в нем.

Обратите внимание, что нет необходимости использовать QListWidget::takeItem, если вы не хотите делать что-то еще с возвратом QListWidgetItem.

Если ваша цель - просто удалить строку элемента из списка, вам нужно всего лишь delete. Как поясняется в документе docs:

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

 Смежные вопросы

  • Нет связанных вопросов^_^