我已经安装了具有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中,您现在必须添加widgets到QTqmake变量(在您的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文件并解决此问题.
小智 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)
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.
有关详细信息,请参阅官方文档.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
小智 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)