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

Ram*_*uri 52 c++ qt

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

Error QApplication: no such file or directory
Run Code Online (Sandbox Code Playgroud)

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

Tim*_*mmm 101

在Qt 5中,您现在必须添加widgetsQTqmake变量(在您的MyProject.pro文件中).

 QT += widgets
Run Code Online (Sandbox Code Playgroud)


kar*_*lip 58

要开始,错误QApplication: no such file or directory意味着您的编译器无法找到此标头.它与您在问题中提到的链接过程无关.

-I标志(大写)用于指定包括(头)目录(这是你需要做什么),而-L标志用于指定库目录.该-l标志(小写的L)用于将应用程序与指定的库链接.

但是你可以使用Qt来获得优势:Qt有一个名为qmake的构建系统,它使事情变得更容易.例如,当我想编译main.cpp时,我创建了一个main.pro文件.出于教育目的,让我们说这个源代码是一个只使用QApplication和的简单项目QDeclarativeView.一个合适的.pro文件将是:

TEMPLATE += app
QT += gui declarative
SOURCES += main.cpp
Run Code Online (Sandbox Code Playgroud)

然后,执行该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
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • 在Qt 5.x之后,您需要将`QT + = widgets`添加到**.pro**文件中. (20认同)

小智 29

对于QT 5

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

QT       += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
Run Code Online (Sandbox Code Playgroud)

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

#include <QtGui/QApplication> 
Run Code Online (Sandbox Code Playgroud)

有:

#include <QApplication>
Run Code Online (Sandbox Code Playgroud)

  • 对于 Qt 5,包含内容似乎是 *`#include &lt;QtWidgets/QApplication&gt;`*。这是根据*`find /usr -name QApplication`*。 (2认同)

Abh*_*ogi 14

看起来您没有安装开发库.使用以下方法安装

sudo apt-get install libqt4-dev
Run Code Online (Sandbox Code Playgroud)

正如你在安装它们的评论中所说,只需重新安装即可.现在.要更新locate的数据库,请发出此命令$sudo updatedb

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

现在,转到您拥有代码的文件夹并输入这些命令

qmake -project
qmake
make
Run Code Online (Sandbox Code Playgroud)

然后你可以找到创建的二进制文件.

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


小智 6

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

#include <QtGui/QComboBox>     // incorrect in QT5
#include <QtWidgets/QComboBox>    // correct in QT5
Run Code Online (Sandbox Code Playgroud)

或者

#include <QtGui/QStringListModel>    // incorrect in QT5
#include <QtCore/QStringListModel>    // correct in QT5
Run Code Online (Sandbox Code Playgroud)