8

我想编译 Qt 示例。我收到错误 QtWidgets: No such file or directory #include

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets - does not help
QT += widgets                                   - does not help
INCLUDEPATH += /opt/Qt/5.3/Src/qtbase/include/  - does not help

Qt 5.3。Ubuntu 14.04 x64。

4

4 回答 4

10

您需要仔细检查您是否完成了所有这些步骤:

  • 已安装模块

  • 大于(QT_MAJOR_VERSION,4):QT += 小部件

  • 您重新运行 Qt 5 qmake。

话虽如此,我想提醒您,包含整个模块并不是一个好主意,因为它包含所有与小部件相关的东西。尝试将其缩小到您真正需要的标题。

于 2014-07-10T06:05:08.660 回答
9

正如您注意到的那样,Qt 目录结构在 Qt4 和 Qt5 之间发生了变化。QWidget 标头移动到 QtWidgets 目录。尝试添加

INCLUDEPATH += /opt/Qt/5.3/Src/qtbase/include/QtWidgets

如果这无济于事,请尝试使用手动查找标题

find /opt/Qt/5.3/Src/qtbase/ -name QWidget

以及它所在的目录 INCLUDEPATH

根据最终竞赛的评论进行编辑。

我同意变通办法通常是一个坏主意。测试你的安装在哪里寻找 qt5 头文件和库。创建一个最小的项目。

#include <QApplication>
#include <QtWidgets>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QWidget w;
    w.show();
    app.exec();
}

生成项目并添加 QT += 小部件

/opt/Qt/5.3/Src/qtbase/bin/qmake -project

项目文件

######################################################################
# Automatically generated by qmake (3.0) Thu Jul 10 13:05:17 2014
######################################################################

TEMPLATE = app
TARGET = so_qtwidgets
INCLUDEPATH += .

QT += widgets

# Input
SOURCES += main.cpp

生成make文件

/opt/Qt/5.3/Src/qtbase/bin/qmake

有趣的部件小部件标志添加:

  • 在我的情况下 -I/usr/include/qt5/QtWidgets -I/usr/include/qt5/QtGui 到 INCPATH
  • -DQT_WIDGETS_LIB 到 DEFINES 变量。
  • -lQt5Widgets -lQt5Gui 到库。

唯一不同的部分是 QtWidgets 和 QtGui 的路径。如果这些是错误的,我会尝试重新安装 Qt。

于 2014-07-10T08:30:49.840 回答
2

在运行“make”之前检查您的 .pro 文件的外观。我发现命令“qmake -project”自动生成了一个导致同样错误的 .pro 文件。我现在通过以下命令编译了我的 qt 项目并且错误消失了:

qmake my_project.pro
make
于 2019-09-25T19:01:21.183 回答
0

这一切看起来很像错误的方式,我在 5.6 中暂时遇到了同样的问题,但答案可能要简单得多。

如果您正在加载大量示例,您可能会首先到达编辑器或任何您最终的位置。如果示例是第一次加载,则需要在项目侧选项卡下进行“配置”,该选项卡应为您提供“配置”而不是“构建和运行”。它并不总是直接跳转有一个缺陷,但是默认情况下包含不支持的示例也是如此(桌面 OpenGL 和 iOS 两个)。

在完成之前,它不会解决直接项目之外的任何依赖关系,因为使用的库取决于使用的编译器/目标(例如 MSVS、GNUCC、MinGW、32/64 位)。

于 2016-05-15T15:41:05.640 回答