int count = listWidget->count();
for(int index = 0;
index < count;
index++)
{
QListWidgetItem * item = listWidget->item(index);
// A wild item has appeared
}
Я думаю, что вещь foreach
совершенно другая.
Если вам нужна дополнительная информация по этому вопросу, посмотрите на
http://doc.qt.digia.com/4.2/containers.html#the-foreach-keyword
прокрутку вниз, где он говорито ключевом слове foreach
.
Отдельное спасибо Tomalak Geret'kal за добавление правильных символов, которые моя клавиатура не может произвести:)
Из-за очень многихвыше, здесь я также объясню макрос foreach.
foreach - это специфичное для Qt дополнение C ++, реализованное с использованием препроцессора.Если вы хотите отключить эту вещь, просто добавьте CONFIG + = no_keywords в ваш файл XX.pro.
Qt делает копию списка, который повторяется, но не беспокойтесь о производительности.Контейнеры Qt используют неявное совместное использование, где фактическое содержимое не копируется.Думайте об этом как о двух ссылочных переменных, использующих одну и ту же фактическую переменную.Это позволяет модифицировать список, по которому вы перебираете, без путаницы в цикле.Обратите внимание, что изменение списка заставляет Qt делать копию фактического содержимого списка при первом его изменении.
foreach может использоваться для циклического перебора всех основных контейнеров Qt, QList QVector QMap QMultiMap и так далее.QListWidget не является одним из них, поэтому он, к сожалению, не работает.Что еще хуже, QListWidget не предоставляет список всех элементов, только выбранные.Есть метод с именем items, который, казалось бы, неплох, но защищен.
Чтобы зациклить выбранные элементы, я думаю, это сработает
foreach(QListWidgetItem * item, listWidget->selectedItems())
{
// A wild item has appeared
}