0

我是 Qt 新手,刚刚安装了最新版本的 Linux(mint 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?任何建议将不胜感激。

4

2 回答 2

3

您可以在同一系统上同时拥有 Qt 4 和 5。但是,它们之间几乎没有区别,而您正在达到其中之一。在 Qt 5 中,小部件现在存在于它们自己的模块中,因此您需要添加

QT += widgets

到您的.pro文件并重新运行qmake.

(在你说你在屏幕上看不到任何东西之前:不要删除标签!)

于 2013-06-27T16:40:09.213 回答
1

查看是否有“qmake4”、“qt4-qmake”或“qmake-qt4”命令,而不仅仅是“qmake”。

另外,为什么要在外部安装 Qt4?Ubuntu 在其存储库中提供了它。只需使用 Ubuntu 的包管理器安装它。这样您就可以确定它会正确安装。Qt Creator 也可以在 repos 中找到。

于 2013-06-27T16:45:13.887 回答