QT5 Eclipse奇怪的语法错误

QT5 Eclipse weird syntax error

我正在使用 Eclipse 4.5 来实现一些带有 QT5 的 GUI。 CMAKE 用于编译我的项目。因此,Eclipse 向我显示了一些错误,例如无效参数

Description Resource    Path    Location    Type
Invalid arguments '
Candidates are:
QMetaObject::Connection connect(const QtPrivate::FunctionPointer<#0>::Object *, #0, const QtPrivate::FunctionPointer<#1>::Object *, #1, enum Qt::ConnectionType)
QMetaObject::Connection connect(const QObject *, const char *, const QObject *, const char *, enum Qt::ConnectionType)
QMetaObject::Connection connect(const QObject *, const QMetaMethod &, const QObject *, const QMetaMethod &, enum Qt::ConnectionType)
QMetaObject::Connection connect(const QObject *, const char *, const char *, enum Qt::ConnectionType)
QtPrivate::QEnableIf<1 11 14 129 1 74 0 ArgumentCount 14 QtPrivate::FunctionPointer 1 #1 103 4225 0 74 01 11 14 129 1 74 0 ArgumentCount 14 QtPrivate::FunctionPointer 1 #1 103 4225 0 74 0,QMetaObject::Connection>::Type connect(const QtPrivate::FunctionPointer<#0>::Object *, #0, #1)
QtPrivate::QEnableIf<1 15 1 11 14 129 1 74 0 ArgumentCount 14 QtPrivate::FunctionPointer 1 #1 103 4225 0 74 0 15 7 74 0 IsPointerToMemberFunction 14 QtPrivate::FunctionPointer 1 #1 01 15 1 11 14 129 1 74 0 ArgumentCount 14 QtPrivate::FunctionPointer 1 #1 103 4225 0 74 0 15 7 74 0 IsPointerToMemberFunction 14 QtPrivate::FunctionPointer 1 #1 0,QMetaObject::Connection>::Type connect(const QtPrivate::FunctionPointer<#0>::Object *, #0, const QObject *, #1, enum Qt::ConnectionType)
QtPrivate::QEnableIf<1 28 74 0 ArgumentCount 14 QtPrivate::FunctionPointer 1 #1 15 3 103 4225 1 74 1 01 28 74 0 ArgumentCount 14 QtPrivate::FunctionPointer 1 #1 15 3 103 4225 1 74 1 0,QMetaObject::Connection>::Type connect(const QtPrivate::FunctionPointer<#0>::Object *, #0, #1)
QtPrivate::QEnableIf<1 28 74 0 ArgumentCount 14 QtPrivate::FunctionPointer 1 #1 15 3 103 4225 1 74 1 01 28 74 0 ArgumentCount 14 QtPrivate::FunctionPointer 1 #1 15 3 103 4225 1 74 1 0,QMetaObject::Connection>::Type connect(const QtPrivate::FunctionPointer<#0>::Object *, #0, const QObject *, #1, enum Qt::ConnectionType)
'   gui.cpp /PROJECT/src    line 161    Semantic Error

最有趣的是我的项目编译时没有任何错误或警告!

问题出在函数QObject::connect

QNetworkReply* reply = manager->get(request);
connect(reply, &QNetworkReply::finished, this, &MyAPP::onRequestFinished);

这个函数有什么问题?

我怎么做 Linux + eclipse + Qt + CMake.

Qt

  • 获取最新的eclipse然后通过"Help -> Install New Software".

  • 在其中安装Qt包
  • 在 CMake 项目源目录之外创建一个空 "workspace" 目录。

  • 启动 eclipse 并切换到 "workspace" 目录。

  • 创建 C++ -> Makefile 项目 -> Qt Makefile 项目。

  • 从中删除*.pro文件、makefile和main.cpp。

来源

  • 转到项目属性 -> 路径和符号 -> 源位置 -> Link 文件夹。

  • 检查 "Advanced" 和 link CMake 项目的源文件夹,如下所示:../../myproject/。它之所以有效,是因为工作区就在 CMake 项目目录之外。

CMake 生成器

  • 在项目中创建Release文件夹。

  • 转到"Make Target"视图(Ctrl+3然后输入"Make Target"如果很难找到)。 "Make Target" 视图看起来就像项目视图。

  • 右键单击 "Release" 文件夹和 "New..."。

  • 取消选中 "Same as target name",取消选中 "Use builder settings"。

  • 在"Target name"字段中输入"Release",将"Make target"留空,"Build command"类似于"cmake ../../../myproject/"。点击确定

  • 双击刚刚在 Release 文件夹中创建的 "Release" make 目标。它应该 运行 cmake.

建造

  • 转到项目属性,创建 "Release" 配置。

  • 激活 "Release" 配置。

  • 对于 "Release" 配置取消选中 "Generate Makefiles automatically"。

  • 将构建目录设置为"Release"。

  • 启用并行构建。

它现在应该在 "Release" 目录中构建。如果没有,请从 "Release" 目录中删除所有内容,然后像以前一样在 "Make Target" 视图中通过 double-clicking 在 "Release" 目标上重新 运行 cmake。