【问题标题】:When compiling get error: 'QtGui/QAction' file not found #include <QtGui/QAction>编译时出现错误:找不到'QtGui/QAction'文件#include <QtGui/QAction>
【发布时间】:2014-02-28 08:49:09
【问题描述】:

我刚刚安装了 Mac OS X 10.8.3 和 Qt Creator 3、XCode 和 XCode 命令行工具。我正在尝试编译一个可以在另一台计算机上运行的项目,但是每次我去“全部构建”时,我都会得到error: 'QtGui/QAction' file not found#include &lt;QtGui/QAction&gt;

我尝试在 .pro 文件中添加第二行和第三行,但没有帮助

QT       += core gui opengl
CONFIG += qt
QT += gui
TARGET = BasicOpenGL
TEMPLATE = app

更新:我也尝试了这个 .pro 文件,但它不起作用

QT       += core gui opengl
QT += widgets
TARGET = BasicOpenGL
TEMPLATE = app

我应该说这是我第一次尝试在 mac 上进行开发。

从 Qt 编译输出

Versions/A/Headers -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/System/Library/Frameworks/AGL.framework/Headers -I. -I. -F/Users/john/Qt/5.2.0/clang_64/lib -o mainwindow.o ../Framework/mainwindow.cpp
In file included from ../Framework/mainwindow.cpp:2:
../Framework/ui_mainwindow.h:14:10: fatal error: 'QtGui/QAction' file not found
#include <QtGui/QAction>
         ^
1 error generated.
make: *** [mainwindow.o] Error 1
15:51:32: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project BasicOpenGL (kit: Desktop Qt 5.2.0 clang 64bit)
When executing step 'Make'

更新:我得到了它的工作,但我不完全确定它做了什么。我从一个新的 mac 映像开始,安装了系统更新,安装了 xcode,安装了 xcode 命令行工具,安装了 QT Creator 3.0,安装了 QT 库 4.8.1,在 QT Creator 中设置了编译器。

【问题讨论】:

  • 来自stackoverflow.com/questions/8274514/…,您必须将“QT += widgets”添加到 Qt5 的 .pro 文件中。
  • 你有你需要的所有库吗?它们不包含在 Qt Creator 中
  • @gartenriese 我不这么认为。我尝试关注these instructions,但发现它们不完整。 “在包目录中运行 ./configure 脚本。”我找不到那个,也不知道包目录是什么。
  • 包目录是指说明中步骤1中提到的存档解压缩目录(获取存档here -- 链接“Qt library 4.8.5 for Mac”应该是正确的) .
  • 我通过运行 Qt.mpkg 文件为 Mac 安装了 Qt 库 4.8.5,但还是同样的问题

标签: c++ macos qt


【解决方案1】:

尝试先输入make clean,然后输入make。我在 Windows 7 系统上遇到了这个确切的问题,这对我有用。

【讨论】:

    【解决方案2】:

    在 Qt5 中,QAction 标头位于 QtWidgets 包含子目录中,而不是在 QtGui 中(对于 Qt4 也是如此)。尽管您实际上不需要指定包含子目录,因为qmake 会为您处理。您只需将QT += widgets 添加到您的.pro 文件中。

    【讨论】:

    • 你能检查失败的编译命令是否包含-I&lt;PATH_TO_QT5_INSTALL&gt;/QtWidgets吗? (它在底部状态栏的 Qt Creator 中的“编译输出”下。)
    • 不,我不这么认为。我用编译器的输出更新了这个问题。
    • 我也有同样的问题,我可以在 QtWidget 目录中看到 QAction 我的 pro 文件中有 QT += 小部件仍然是同样的错误。
    • 使用 QT Creator,将版本设置为 Qt5 并重建项目对我有用
    • 我在 peercoin-qt 上遇到了这个问题。为了解决这个问题,我需要清理build 目录并重新运行qmake,因为它似乎没有更新那些自动生成的头文件。
    【解决方案3】:

    设置版本为Qt5,将#include&lt;QtQui/*&gt;s全部改成#include&lt;QtWidgets/*&gt;。 并在您的 .pro 文件中添加 QT += widgets。 重新编译项目,当再次出现错误时,点击错误消息,并将#include&lt;QtQui/*&gt;s 也更改为#include&lt;QtWidgets/*&gt;

    【讨论】:

    • 同时删除ui_*.h中所有的“QApplication::UnicodeUTF8”。
    【解决方案4】:

    这里的一些答案说您必须将 include 从 &lt;QtGui/QAction&gt; 更改为 &lt;QtWidgets/QAction&gt;

    在 QT-5 下编译时就是这种情况。但是在 QT-6 发布之后,你必须在 QT-6 应用程序中做相反的事情。

    现在您必须将&lt;QtWidgets/QAction&gt; 更改为&lt;QtGui/QAction&gt;,因为现在QAction 位于QT-6 的QtGui 文件夹中。

    虽然我的回答与你的老问题无关,因为你有 QT-4 问题,但你的问题仍然首先在 Google 中弹出,因此我将我的答案发布给那些有同样问题但编译 QT 的 StackOverflow 访问者-5 项目在 QT-6 下,就像我一样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-01
      • 2016-05-16
      相关资源
      最近更新 更多