web-dev-qa-db-ja.com

Qt 5.3。 QtWidgets:そのようなファイルやディレクトリはありません#include <QtWidgets>

Qtの例をコンパイルしたいと思います。エラーQtWidgetsが表示されます:そのようなファイルやディレクトリはありません#include

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets - does not help
QT += widgets                                   - does not help
INCLUDEPATH += /opt/Qt/5.3/Src/qtbase/include/  - does not help

Qt 5.3。 Ubuntu 14.04 x64。

7
Ufx

次のすべての手順を完了したことを再確認する必要があります。

  • インストールされているモジュール

  • greatThan(QT_MAJOR_VERSION、4):QT + =ウィジェット

  • Qt 5 qmakeを再実行します。

とは言っても、ウィジェット全体に関連するものがすべて含まれているため、モジュール全体を含めることはお勧めできません。本当に必要なヘッダーに絞り込んでください。

9
lpapp

お気づきのとおり、Qt4とQt5の間でQtディレクトリ構造が変更されました。 QWidgetヘッダーがQtWidgetsディレクトリに移動しました。追加してみてください

INCLUDEPATH += /opt/Qt/5.3/Src/qtbase/include/QtWidgets

それが役に立たない場合は、手動でヘッダーを見つけてみてください

find /opt/Qt/5.3/Src/qtbase/ -name QWidget

そして、それがINCLUDEPATHにあるディレクトリ

ファイナルコンテストのコメントに基づいて編集します。

回避策は通常悪い考えであることに同意します。 QTがどこでQT5ヘッダーとライブラリを探すかをテストするには、最小限のプロジェクトを作成します。

#include <QApplication>
#include <QtWidgets>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QWidget w;
    w.show();
    app.exec();
}

プロジェクトを生成し、QT + =ウィジェットを追加する

/opt/Qt/5.3/Src/qtbase/bin/qmake -project

プロジェクトファイル

######################################################################
# Automatically generated by qmake (3.0) Thu Jul 10 13:05:17 2014
######################################################################

TEMPLATE = app
TARGET = so_qtwidgets
INCLUDEPATH += .

QT += widgets

# Input
SOURCES += main.cpp

メイクファイルを生成する

/opt/Qt/5.3/Src/qtbase/bin/qmake

興味深いパーツウィジェットフラグが追加されます。

  • 私の場合-I/usr/include/qt5/QtWidgets -I/usr/include/qt5/QtGui to INCPATH
  • -DQT_WIDGETS_LIBをDEFINES変数に。
  • -lQt5Widgets -lQt5Gui to libs。

異なるはずの唯一の部分は、QtWidgetsとQtGuiへのパスです。これらが間違っている場合は、Qtを再インストールしてみます。

8
Tobias

「make」を実行する前に、.proファイルがどのように見えるかを確認してください。コマンド「qmake -project」がこの同じエラーの原因となる.proファイルを自動生成したことがわかりました。次のコマンドを使用してqtプロジェクトをコンパイルすると、エラーが発生しなくなりました。

qmake my_project.pro
make
1
Colin Mcgovern

これはすべて間違った方法に非常によく似ており、5.6で一時的に同じ問題が発生しましたが、答えははるかに単純になる可能性があります。

多くの例をロードしている場合は、最初にエディタなどに到達する可能性があります。例が初めてロードされた場合は、プロジェクトのサイドタブの下にある「構成」する必要があります。これにより、「ビルドと実行」ではなく「構成」が表示されます。常にすぐにジャンプするとは限らないという欠点がありますが、デフォルトでサポートされていないサンプルが含まれています(Desktop OpenGLとiOS for two)。

それが完了するまで、使用されるライブラリは使用されるコンパイラ/ターゲット(例:MSVS、GNCCC、MinGW、32/64ビット)に依存するため、直接のプロジェクト以外の依存関係は解決されません。

0
user4503219