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

Error QApplication: no such file or directory

本文关键字:文件 QApplication 错误      更新时间:2023-10-16

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

Error QApplication: no such file or directory

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

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

 QT += widgets

首先,错误QApplication: no such file or directory表示编译器找不到此标头。它与您在问题中提到的链接过程无关。

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

但您可以使用Qt来获得优势:Qt有一个名为qmake的构建系统,这让事情变得更容易。例如,当我想编译main.cpp时,我会创建一个main.pro文件。出于教育目的,假设此源代码是一个仅使用QApplicationQDeclarativeView的简单项目。适当的.pro文件是:

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

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

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

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

对于QT 5

步骤1:.pro(在专业文件中,添加这2行)

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

步骤2:main.cpp中替换代码:

#include <QtGui/QApplication> 

带有:

#include <QApplication>

看起来您没有安装开发库。使用安装

sudo apt-get install libqt4-dev

正如你在评论中所说,你已经安装了它们,只需重新安装即可。现在。要更新定位的数据库,请发出以下命令$sudo updatedb

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

现在,转到代码所在的文件夹&键入以下命令

qmake -project
qmake
make

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

或者,如果您想要GUI,也可以使用Qt Creator。

  • 有关更多信息,请参阅官方文档。http://developer.qt.nokia.com/doc/qt-4.8/gettingstartedqt.html

  • 要学习如何使用Qt Creator,请使用http://doc.qt.nokia.com/qtcreator-2.2/creator-qml-application.html

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

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

可以肯定的是,你可以运行:

$qmake -v

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

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

要解决此问题,您可以删除QT的旧安装,也可以在Makefile中特别指向qmake-qt4。

您必须在第一次执行之前在.pro文件中添加QT+=小部件,如果您在添加此行之前执行,则不起作用,因此您需要从头开始创建文件。

好吧,现在有点晚了,但我刚刚开始学习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 中包含它

Am使用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 上写上面的代码

我使用的是linuxmint 20.0

确保您的路径中有qmake(哪个qmake),并且它有效(qmake-v)(如果你必须用ctr-c杀死它,那么你的环境就有问题了)。

然后按照以下步骤操作:http://developer.qt.nokia.com/doc/qt-4.8/gettingstartedqt.html

我建议您更新您的SDK,启动新项目,并重新编译您所拥有的一切。你似乎有一些内部程序错误。或者您丢失了包裹。

和ofc做阿卜迪耶克说的。

您可以更改构建版本。例如,我尝试了QT 5.6.,但没有成功。然后我尝试了QT 5.7.0。所以它成功了,祝你好运!:)

#include#包括

#包括";ui_mainwindow.h"此处出错

我有解决方案:我使用KDevelop,文件->打开->构建->构建->(clic on ui_mainwindow.h)-­>打开

哇!