错误QApplication:没有这样的文件或目录
Error QApplication: no such file or directory
我安装了具有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文件。出于教育目的,假设此源代码是一个仅使用QApplication
和QDeclarativeView
的简单项目。适当的.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)->打开
哇!
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 挂起和取消挂起一个文件DLL
- 如何确定我已使用非编码文件到达 EOF?
- 命名空间中具有.h和.cpp文件的类
- 如何使用ndk-build.cmd构建Android.so文件
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 读取文件并输入到矢量中
- 在C++中查找文件
- c++库的公共头文件中应该包含什么
- QT 5 [ 错误: QtGui/QApplication: 没有这样的文件或目录]
- 错误QApplication:没有这样的文件或目录
- 致命错误:qapplication.h:没有这样的文件或目录
- Visual Studio 2010 - 无法打开源代码文件 <QtGui/QApplication>
- QApplication: windows上没有Qt5和qtsingleapplication这样的文件或目录
- QtGui/QApplication:没有这样的文件或目录