Qt foreach () выполняет итерацию только один раз, игнорируя остальные элементы - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь добавить некоторые функции в старое приложение Qt4, и я новичок в Qt. Приложение использует ключевое слово foreach, которое, как мне кажется, реализовано в Qt как . Однако все foreach циклы в приложении запускаются только один раз, независимо от количества элементов, находящихся в контейнере.

Я добавил эту проверку работоспособности в приложение:

QString test("1234");

int i = 0;
foreach (QChar c, test) {
    i++;
}

int stl = 0;
for (QString::iterator j = test.begin(); j != test.end(); j++) {
    stl++;
}

qDebug()
    << "string:" << test
    << "size:" << test.size()
    << "foreach:" << i
    << "stl:" << stl
;

It всегда показывает это сообщение:

string: "1234" size: 4 foreach: 1 stl: 4

Я тестировал его с указанным выше QString и с QModelIndexList, и каждый раз он запускает l oop только один раз, даже если контейнер сообщает, что более одного элемента, и в обоих случаях l oop в стиле STL работает нормально, только foreach выходит из l oop раньше.

Что я делаю не так? Приложение построено на Qt 4.8.7.

...