Qt 5.3.QtWidgets:没有这样的文件或目录#include <QtWidgets>

Ufx*_*Ufx 6 c++ qt qmake qt5 qtwidgets

我想编译Qt示例.我得到错误QtWidgets:没有这样的文件或目录#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
Run Code Online (Sandbox Code Playgroud)

Qt 5.3.Ubuntu 14.04 x64.

lpa*_*app 8

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

  • 已安装模块

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

  • 你重新运行Qt 5 qmake.

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


Tob*_*ias 8

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

INCLUDEPATH += /opt/Qt/5.3/Src/qtbase/include/QtWidgets
Run Code Online (Sandbox Code Playgroud)

如果这无助于尝试手动查找标题

find /opt/Qt/5.3/Src/qtbase/ -name QWidget
Run Code Online (Sandbox Code Playgroud)

以及它在INCLUDEPATH中的目录

根据最终比赛的评论进行编辑.

我同意解决方法通常是一个坏主意.要测试安装QT在哪里查找qt5标头和库.创建一个最小的项目.

#include <QApplication>
#include <QtWidgets>

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

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

/opt/Qt/5.3/Src/qtbase/bin/qmake -project
Run Code Online (Sandbox Code Playgroud)

项目文件

######################################################################
# 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
Run Code Online (Sandbox Code Playgroud)

生成一个make文件

/opt/Qt/5.3/Src/qtbase/bin/qmake
Run Code Online (Sandbox Code Playgroud)

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

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

应该有所不同的唯一部分是QtWidgets和QtGui的路径.如果这些错了,我会尝试重新安装Qt.

  • 明确指定包含路径是个坏主意.出于这个原因,存在`QT + =小部件'.此外,OP不使用`QWidget header`,而是`QtWidgets`.我觉得你很困惑.此外,即使您执行该手册包含解决方法,您仍然会遇到上述问题,导致包含其他路径等. (2认同)