好吧,我试了一下。这应该是非常简单的,但我找到了我的foreach正在发生的事情。它没有帮助。
#include <QCoreApplication>
//coreapplication or Qapplication the error is there
#include <QList>
#include <QDebug>
int main()
{
QList<int> list;
list << 1 << 2 << 3 << 4 << 5;
foreach (int i, list) //expected token ';' got 'int'.
{
qDebug() << i;
}
}
/*
QT += core gui
TARGET = QtTest
CONFIG += console
CONFIG -= app_bundle
CONFIG += no_keywords
TEMPLATE = app
SOURCES += main.cpp
*/
答案 0 :(得分:10)
您在配置中指定了scope: {bindModel:'=ngModel'}
。您必须使用no_keywords
代替Q_FOREACH
。请参阅foreach
的{{3}}。
话虽这么说,我会切换到基于C ++ 11范围的foreach
,因为它在类型中没有逗号问题。例如,
for
将无法编译,因为预处理器认为您尝试使用3个参数而不是2来调用宏。
答案 1 :(得分:3)
相反,您可以使用C++11 for(:)
:
for(int i:list)
{
qDebug() << i;
}
请注意,您必须使用C++-11
标志进行编译,因此请将此行添加到项目文件中:
QMAKE_CXXFLAGS += -std=c++11
请注意,C ++ 11 for
比Qt foreach
效率更高,如下所示:Qt foreach loop ordering vs. for loop for QList
修改强> 就像Frank Osterfeld评论一样,您也可以使用:
CONFIG+=c++11
5.4之后的.pro
文件中的