0

私は Qt を初めて使用し、プログラミングを開始するために最新バージョンの Linux (mint Ubuntu 13.04) をインストールしました。まず、github BuildScript を使用して Qt4 をインストールしました (これにより、QtCreater、QtDesigner、QtAssistant、および QtLinguist もインストールされます)。Python の GUI プログラミングも少し行う予定なので、PySide もインストールしました。私は意識的に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.

これは明らかに、qmake によって指定されたライブラリで gcc が 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

ご覧のとおり、Qt4 をインストールしたにもかかわらず、qmake は qt 5.0.1 を想定しています。私の qt5 ライブラリ ディレクトリ階層では、「QApplications」は QtGui ではなく /usr/include/qt5/QtWidgets にあります。ただし、qmake は QtWidgets/ をインクルード ライブラリに追加しません。

何が起こったのかわかりません... 1 つのシステムで同時に 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 に答える