Как я могу перебирать элементы QListWidget и работать с каждым элементом?
В CSharp его так же просто, как писать:
listBox1.Items.Add("Hello");
listBox1.Items.Add("There");
foreach (string item in listBox1.Items )
{
MessageBox.Show(item.ToString());
}
и я могу легко добавить различные объекты в список, а затем получить их с помощью foreach. Я пробовал тот же подход в Qt 4.8.2, но, похоже, они разные.хотя на первый взгляд они очень похожи.Я обнаружил, что Qt поддерживает foreach, поэтому я продолжил и попытался что-то вроде :
foreach(QListWidgetItem& item,ui->listWidget->items())
{
item.setTextColor(QColor::blue());
}
который явно потерпел неудачу.Он говорит, что items () нуждается в параметре, который смущает меня.Я пытаюсь перебрать список что же это значит? Я попытался передать объект ListBox в качестве самого параметра, это снова не удалось:
foreach(QListWidgetItem& item,ui->listWidget->items(ui->listWidget))
{
item.setTextColor(QColor::blue());
}
Так вот мои вопросы:
- как я могу перебирать элементы QListWidget в Qt?
- могу ли я хранить объекты как элементы в QListWidgets, такие как C#?
- как преобразовать объект в QListWidgets в string (часть счетчика C#S ToString в Qt) ?
(предположим, я хочу использовать QMessagBox вместо этого setTextColor и хотите распечатать все строковые элементы в QlistWidget.)
3 ответов
Я не думаю, что предметы что вы думаете он делает. Похоже, что это для декодирования данных MIME, а не для получения списка всех элементов виджета.
на самом деле я не вижу никакой функции, чтобы делать то, что вы хотите, к сожалению. Вы могли бы использовать в разделе finditems как обходной путь, но это кажется уродливым, если не прямо оскорбительным... По крайней мере, вы все еще можете использовать функции пункт С for
петли - они не это гораздо больше, набрав:
for(int i = 0; i < listWidget->count(); ++i)
{
QListWidgetItem* item = listWidget->item(i);
//Do stuff!
}
надеюсь, что это поможет!
попробуйте сделать указатель на каждый из предметов, если вы делаете элементы списка в код. Но, если вы используете .ui-файл, чтобы сделать элемент списка, попробуйте щелкнуть его правой кнопкой мыши и нажать Изменить таблицу стилей. Вы можете редактировать его очень легко.
вы можете сделать что-то вроде этого:
for(int i = 0; i < listWidget->count(); ++i)
{
QString str = listwidget.item(i)->text();
//Do stuff!
}