错误 QApplication: 没有这样的文件或目录

我已经安装了具有 Qt 的 C + + SDK,但是当我尝试编译一个链接 QApplication 的代码时,它给了我一个错误:

Error QApplication: no such file or directory

如何链接这些库?我在目录中搜索,发现有一个名为 QApplication.h 的文件; 所以我试图将它链接到-I (链接目录) ,但它仍然给我出现了这个错误。

172481 次浏览

似乎您没有安装开发库。请使用以下方法安装它们:

sudo apt-get install libqt4-dev

正如您在注释中所说,您已经安装了它们,只需要重新安装它。现在。要更新位置的数据库,请发出以下命令 $sudo updatedb

然后 $locate QApplication检查您现在已经安装了头文件。

现在,进入代码所在的文件夹并键入这些命令

qmake -project
qmake
make

然后您可以找到创建的二进制文件。

或者,如果需要 GUI,可以使用 Qt Creator。

我建议你更新你的 SDK,开始新的项目,重新编译你所拥有的一切。看来你有一些内部程序错误。不然你就是丢了包裹。

按 Abdijeek 说的做。

请确保您正在使用的 qmake 版本与您想要使用的 QT 版本相对应。

可以肯定的是,你可以直接跑:

$qmake -v

你的问题似乎是 QT 3和4之间版本冲突的症状,如下图所示:

Http://lists.trolltech.com/qt4-preview-feedback/2005-11/thread00013-0.html

为了解决这个问题,您可以删除旧的 QT 安装,或者在 Makefile 中特别指向 qmake-qt4。

首先,错误 QApplication: no such file or directory意味着您的编译器无法找到这个头。它与您在问题中提到的链接过程无关。

-I标志(大写的 )用于指定 include (headers)目录(这是您需要做的) ,而 -L标志用于指定库目录。-l标志(小写 L)用于将应用程序链接到指定的库。

但是您可以使用 利用 Qt: Qt 有一个名为 Qmake的构建系统,这使事情变得更简单。例如,当我想编译 Main.cpp时,我创建一个 主要的,专业的文件。出于教育目的,我们假设这个源代码是一个只使用 QApplicationQDeclarativeView的简单项目。适当的 。亲文件应该是:

TEMPLATE += app
QT += gui declarative
SOURCES += main.cpp

然后,执行该目录中的 qmake以创建将用于编译应用程序的 Makefile,最后执行 make以完成该任务。

在我的系统中,make输出:

g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_DECLARATIVE_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/opt/qt_47x/mkspecs/linux-g++ -I. -I/opt/qt_47x/include/QtCore -I/opt/qt_47x/include/QtGui -I/opt/qt_47x/include/QtDeclarative -I/opt/qt_47x/include -I/usr/X11R6/include -I. -o main.o main.cpp
g++ -Wl,-O1 -Wl,-rpath,/opt/qt_47x/lib -o main main.o -L/opt/qt_47x/lib -L/usr/X11R6/lib -lQtDeclarative -L/opt/qt_47x/lib -lQtScript -lQtSvg -L/usr/X11R6/lib -lQtSql -lQtXmlPatterns -lQtNetwork -lQtGui -lQtCore -lpthread

注意: 我在另一个目录中安装了 Qt —— > /opt/qt_47x

编辑: Qt 5.x 及更高版本

QT += widgets添加到. pro 文件并解决此问题。

确保在路径中有 qmake (其中 qmake) ,并且它可以工作(qmake-v) (如果必须用 ctr-c 杀死它,那么环境就有问题)。

然后按照这个: http://developer.qt.nokia.com/doc/qt-4.8/gettingstartedqt.html

在 Qt 5中,现在必须将 widgets添加到 QT qmake 变量(在 MyProject.pro文件中)。

 QT += widgets

Qt5中你应该使用 QtWidgets而不是 QtGui

#include <QtGui/QComboBox>     // incorrect in QT5
#include <QtWidgets/QComboBox>    // correct in QT5

或者

#include <QtGui/QStringListModel>    // incorrect in QT5
#include <QtCore/QStringListModel>    // correct in QT5

为了 QT 5

第一步: .pro(在专业文件中,添加这两行)

QT       += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

第二步:main.cpp中替换代码:

#include <QtGui/QApplication>

与:

#include <QApplication>

中添加 QT + = 小部件。Pro 文件在第一次执行之前,如果你在添加这一行之前执行,它不会工作,所以你需要从一开始就开始创建文件。

您可以更改构建版本。例如,我尝试 QT 5.6.1,但它不工作。比我试过的 QT 5.7.0还多。所以成功了,祝你好运!:)

嗯,现在说这个有点晚了,但是我刚刚开始学习 Qt,也许这个可以帮助一些人:

如果您正在使用 Qt Creator,那么当您开始创建项目时,您被要求选择一个与您的项目一起使用的工具包,让我们假设您选择了 Desktop Qt <version-here> MinGW 64-bit。对于 Qt 5,如果你打开安装的 Qt 文件夹,你会发现一个安装了 Qt 版本作为其名称的文件夹,在这里你可以找到你可以选择的工具包。

你可以转到 /PATH/FOR/Qt/mingw<version>_64/include,在这里你会发现所有的包括,你可以在你的程序中使用,只要搜索 QApplication,你会发现它在文件夹 QtWidgets,所以你可以使用 #include <QtWidgets/QApplication>,因为路径开始从 include文件夹。

对于其他头,如果遇到其他工具包,也是如此。

注意: “所有你可以使用的包括”并不意味着这些是你唯一可以使用的,例如,如果你包含 iostream,那么编译器将包含它从 /PATH/FOR/Qt/Tools/mingw<version>_64/lib/gcc/x86_64-w64-mingw32/7.3.0/include/c++/iostream

# 包括 # 包括

# include“ ui _ mainwindow. h”< strong > Error here ...

我有办法: 我使用 KDevelopment,File- > Open. .-> build- > build-> (ui _ mainwindow.h 上的循环)-> Open

瞧!

正在使用 QT 6

我发现问题在于如何设置版本

我已经设置了一个版本大于6意味着版本7及以上,但我使用 QT 版本6 所以我改变了

greaterThan(QT_MAJOR_VERSION, 6) : QT += widgets

greaterThan(QT_MAJOR_VERSION, 5) : QT += widgets

CONFIG + = c + + 11

在 myproject.pro 上编写以上代码

我用的是 linuxmint20.0