【发布时间】:2020-08-21 10:28:28
【问题描述】:
我正在尝试向旧的 Qt4 应用程序添加一些功能,而且我是 Qt 的新手。该应用程序使用foreach 关键字,我相信它是implemented by 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
;
它总是显示这条消息:
string: "1234" size: 4 foreach: 1 stl: 4
我已经用上面的QString 和QModelIndexList 对其进行了测试,每次它只运行一次循环,即使容器报告有多个项目,并且在这两种情况下都是 STL 风格的循环工作正常,只有foreach 提前退出循环。
我做错了什么?该应用程序是针对 Qt 4.8.7 构建的。
【问题讨论】: