Удалить выбранные элементы из списка виджетов

Как удалить выбранные элементы из qlistWidget,

Я пытался написать следующий код, но не работает.

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

Теперь, как удалить элементы, которые я выбрал из qlistWidget?

2 ответа

Решение

Один из способов удалить элемент из QListWidget это использовать QListWidget::takeItem который удаляет и возвращает элемент:

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

Другой способ заключается в qDeleteAll:

qDeleteAll(ui->listWidget->selectedItems());

Чтобы дать решение с 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.
}
Другие вопросы по тегам