PDA

View Full Version : QListWidgetItem remove an item



mattia
8th November 2007, 15:19
Why can't i remove an item into a QListWidget an item?

void regExp::deleteItem()
{
QList<QListWidgetItem *> listReSelected = ui.listWidgetRE->selectedItems();
ui.labelOut->setText("Size: " + QString::number(listReSelected.size(), 10)); //print the correct vector size
for (int i = 0; i < listReSelected.size(); ++i){
ui.labelOut->setText("selected: " + listReSelected.at(i)->text()); //print the correct name
ui.listWidgetRE->removeItemWidget(listReSelected.at(i)); //it doesn't work
}
}
removeItemWidget want a QListWidgetItem* and i'm passing it....:crying:

jacek
8th November 2007, 15:51
Which Qt version do you use? Have you tried "delete listReSelected.at(i);"?

jpn
8th November 2007, 16:21
Are you mixing "items" and "item widgets"? Item widgets are widgets laid on top of items.

mattia
9th November 2007, 07:28
The widget that contains my item(listWidgetRE) is a QListWidget and ui.listWidgetRE->selectedItems(); returns a QListWidgetItem*, am i mixing them in a wrong way?
Anyway your "delete listReSelected.at(i);" works, but if i'm making a mistake i'd like to know it ;) thx
I'm using Qt 4

jpn
9th November 2007, 07:57
QListWidget is a widget which contains items, namely QListWidgetItems. QListWidgetItems are not widgets but just light items. One handles items (amongst others) with following methods:

QListWidget::addItem()
QListWidget::item()
QListWidget::takeItem()

One can simply delete an item to remove it from QListWidget.

In situations when you need to achieve something you cannot do with items, you have the possibility to place an individual widget on top of an item. These widgets are are called "item widgets". One accesses item widgets with following methods:

QListWidget::itemWidget()
QListWidget::setItemWidget()
QListWidget::removeItemWidget()