Lion King
Lion King

Reputation: 33823

Remove selected items from listWidget

How to remove selected items from a QListWidget?

I have tried write the following code, but it does not work.

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

Upvotes: 31

Views: 46211

Answers (2)

glihm
glihm

Reputation: 1246

To give a solution with 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.
}

Upvotes: 9

Nejat
Nejat

Reputation: 32685

One way to remove item from QListWidget is to use QListWidget::takeItem which removes and returns the item :

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

Another way is to qDeleteAll :

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

Upvotes: 45

Related Questions