2017-05-19 2 views
0

私はQt4からQt5に私のプロジェクトを移しました。私はインクルードに問題があります。 Qt4を用Qt5にはどうすればいいですか?

、私はこれらの行を使用:

#include <QtGui\QtGui> 
#include <QtCore\QtCore> 

をしかし、これはQt5のために動作しないと私は、私が使うべきかわかりません。 QtCreatorの例では、QtWidgetsを使ってそれらを見ることができますが、私はMS Visual Studioを使用しています。

+1

参照します。https:/ /wiki.qt.io/Transition_from_Qt_4.x_to_Qt5 – MrEricSir

答えて

1

あなたはこれらを含む必要はありませんでした。 QtGuiモジュール全体が含まれている場合は、既にそれが依存するQtCoreが含まれており、Qt 4またはQt 5ではのみのみが#include <QtGui>になります。プレフィックスフォーム<QtModule/QClass>は必要ありません。

ウィジェットはQtの5のGUIモジュールの外に移動するので、あなたがQtの4とQt 5の両方をサポートしたい場合、あなたは、Qtの5の単に#include <QtWidgets>必要または:

#include <QtGui> 
#if QT_VERSION >= QT_VERSION_CHECK(5,0,0) 
#include <QtWidgets> 
#endif 
+0

ありがとう、それはQtWidgetsで動作します。しかし何らかの理由で私はこれを次のように使用する必要があります。#include ni1ight

+0

@ ni1ightいいえ、そうではありません。あなたは、 'QT + = widgets'を持たない' .pro'ファイルから失効したMakefileを持っていました。ビルドフォルダを削除して、再試行してください。 –

1

1)モジュールにこれらのヘッダーを含めることはお勧めできません。必要なヘッダーのみを含めることができます(可能な場合はいつでもインクルードの代わりに前方宣言を使用する方がよい)。モジュールヘッダーを含めると、コンパイル速度が向上します(プロジェクトの大きさによっては、多くの場合があります)。

#include<QtWidgets/QLabel>ではなく、#include <QLabel>の代わりにパスにインクルードする必要はありません。Qtが正しくインストールされていれば、それは動作するはずです。

3)QtWidgetsはQt4版のGUIモジュールにあったC++のUI要素を(QLabelなど)(gui moduleは現在のウィンドウシステム、イベント、openglの、イメージなどについてはいくつかの基本を保持している)が含まれQt5内の​​モジュールでありますしたがって、C++でuiを作成する場合は、.proファイル(Qt Creatorを使用する場合)にQT += widgetsを追加するか、Qtプロジェクト設定のモジュールタブ(VS ideを使用する場合)でそのモジュールを選択して、QtWidgetsモジュールをリンクする必要があります。

モジュールの詳細については、documentationをご覧ください。

関連する問題