Hossein Hossein - 1 year ago 187
C++ Question

How can i iterate through QListWidget items and work with each item?

In CSharp its as simple as writting :


foreach (string item in listBox1.Items )

and i can easily add different objects to a list box and then retrieve them using foreach.
I tried the same approach in Qt 4.8.2 but it seems they are different.though they look very similar at first.I found that Qt supports foreach so i went on and tried
something like :

foreach(QListWidgetItem& item,ui->listWidget->items())

which failed clearly.It says the items() needs a parameter which confuses me.I am trying to iterate through the ListBox itself, so what does this mean?
I tried passing the ListBox object as the parameter itself this again failed too:

foreach(QListWidgetItem& item,ui->listWidget->items(ui->listWidget))

So here are my questions:

  • How can I iterate through a QListWidget items in Qt?

  • Can i store objects as items in QListWidgets like C#?

  • How can i convert an object in QListWidgets to string(C#s ToString counter part in Qt) ?

(suppose i want to use a QMessagBox instead of that setTextColor and want to print out all string items in the QlistWidget.)

Answer Source

I don't think the items function does what you think it does. It sounds like it's for decoding MIME data, not getting a list of all the items in the widget.

I don't actually see any function to do exactly what you want, sadly. You could probably use findItems as a workaround, but that seems ugly, if not downright abusive... At least you can still use the item function with good old for loops - they're not that much more typing:

for(int i = 0; i < listWidget->count(); ++i)
    QListWidgetItem* item = listWidget->item(i);
    //Do stuff!

Hope that helps!

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download