In CSharp its as simple as writting :
listBox1.Items.Add("Hello"); listBox1.Items.Add("There"); foreach (string item in listBox1.Items ) { MessageBox.Show(item.ToString()); }
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 the first. I found that Qt supports foreach so I went on and tried something like :
foreach(QListWidgetItem& item,ui->listWidget->items()) { item.setTextColor(QColor::blue()); }
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)) { item.setTextColor(QColor::blue()); }
So here are my questions:
(Suppose I want to use a QMessagBox instead of that setTextColor and want to print out all string items in the QlistWidget.)
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!
You can do something like this:
for(int i = 0; i < listWidget->count(); ++i) { QString str = listwidget.item(i)->text(); //Do stuff! }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With