我是Qt的新手,刚刚安装了最新版本的Linux(薄荷Ubuntu 13.04)来开始编程。首先,我使用github BuildScript安装了Qt4(这也安装了QtCreater,QtDesigner,QtAssistant和QtLinguist)。我也安装了PySide,因为我打算做一些Python gui编程。我没有有意识地安装qt5,但它出现在我所做的某一点。
QT教程中的以下程序说明了我的问题:
#include <QApplication>
#include <QLabel>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QLabel *label = new QLabel("Hello Qt!");
label->show();
delete label;
return app.exec();
}
现在正在运行:
..] $ qmake -project
..] $ qmake
..] $ make
g++ -c -m64 -pipe -O2 -Wall -W -D_REENTRANT -fPIE -DQT_NO_DEBUG -DQT_GUI_LIB
-DQT_CORE_LIB -I/usr/share/qt5/mkspecs/linux-g++-64 -I. -I.
-I/usr/include/qt5 -I/usr/include/qt5/QtGui -I/usr/include/qt5/QtCore -I.
-o helloWorld.o helloWorld.cpp helloWorld.cpp:1:24:
fatal error: QApplication: No such file or directory compilation terminated.
这显然意味着gcc没有在qmake指定的库中找到QApplications。调查这个:
..] $ sudo find / -name QApplication*
/usr/include/qt4/QtGui/QApplication
/usr/include/qt5/QtWidgets/QApplication
/home/drk/Canopy/appdata/canopy-1.0.1.1189.rh5-x86_64/include/QtGui/QApplication
查看make文件,提供的库是(从编译器行可以看到):
INCPATH = -I/usr/share/qt5/mkspecs/linux-g++-64 -I. -I. -I/usr/include/qt5
-I/usr/include/qt5/QtGui -I/usr/include/qt5/QtCore -I.
最后,看看qmake:
..] $ qmake --version
QMake version 3.0
Using Qt version 5.0.1 in /usr/lib/x86_64-linux-gnu
正如你所看到的,qmake正在假设qt 5.0.1,尽管我安装了Qt4并且在我的qt5库目录层次结构中“QApplications”位于/ usr / include / qt5 / QtWidgets而不是QtGui。但是,qmake不会将QtWidgets /添加到我的包含库中。
我不明白发生了什么......可以同时在一个系统上没有qt4和qt5吗?...我的qt5 / qt5安装是否显示已损坏?...我如何获得qmake到用Qt4?任何建议都将不胜感激。
答案 0 :(得分:3)
您可以在同一系统上同时使用Qt 4和5。然而,它们之间几乎没有什么区别,而你正在击中其中之一。在Qt 5中,小部件现在位于自己的模块中,因此您需要添加
QT += widgets
到您的.pro
文件,然后重新运行qmake
。
(在你说屏幕上没有看到任何内容之前:不要删除标签!)
答案 1 :(得分:1)
看看是否有“qmake4”,“qt4-qmake”或“qmake-qt4”命令,而不仅仅是“qmake”。
另外,为什么要在外部安装Qt4? Ubuntu在其存储库中提供它。只需使用Ubuntu的软件包管理器安装它。这样您就可以确定它将被正确安装。 Qt Creator也可以在回购中使用。