【问题标题】:Qt 5.3. QtWidgets: No such file or directory #include <QtWidgets>Qt 5.3。 QtWidgets:没有这样的文件或目录#include <QtWidgets>
【发布时间】:2014-08-31 09:47:15
【问题描述】:

我想编译 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。

【问题讨论】:

    标签: c++ qt qt5 qmake qtwidgets


    【解决方案1】:

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

    • 模块已安装

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

    • 您重新运行 Qt 5 qmake。

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

    【讨论】:

    • 缩小范围是有效的。但我想了解如何编译必须编译的应用程序。-安装模块和-您重新运行 Qt 5 qmake。如何查看?
    • @Ufx:运行 /opt/Qt/5.3/Src/qtbase/bin/qmake ... 或者直接点击 QtCreator 中相应的上下文菜单选项。
    • 还有待检查“已安装模块”。如何查看?
    • 目录存在。
    • 这很难解释,因为您缺乏基础知识。不,你不应该检查 /opt/Qt/5.3/Src/qtbase/include 本身,但它是否有 QtWidgets 目录...
    【解决方案2】:

    正如您注意到的那样,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。

    【讨论】:

    • 它有助于解决该错误。但现在出现了新错误:QtWidgets/QtWidgetsDepends: No such file or directory #include 。我想我明白我需要做什么。但是为什么编辑需要官方的例子呢?可能有办法在环境设置中包含所有 qt 目录?
    • 你确定 /opt/Qt/5.3/Src/qtbase 指向已安装的 qt 库吗?我不希望 Src 在这条路上。在 fedora 20 上,路径是 /usr/include/qt5/QtWidgets/。我不知道为什么 Qt 的文档中有错误。我就是这样解决的。
    • 明确指定包含路径是个坏主意。 QT+=widgets 就是因为这个原因而存在的。此外,OP 没有使用QWidget header,而是QtWidgets。我觉得你很困惑。此外,即使您执行该手动包含解决方法,您仍然会遇到上述问题,这将导致包含另一个路径等。
    • 添加了一个最小的小部件应用程序来帮助检查 qt 安装。
    【解决方案3】:

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

    qmake my_project.pro
    make
    

    【讨论】:

      【解决方案4】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多