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. Убунту 14.04 х64.


person Ufx    schedule 10.07.2014    source источник


Ответы (4)


Вам нужно дважды проверить, что вы выполнили все эти шаги:

  • Модуль установлен

  • больше чем (QT_MAJOR_VERSION, 4): QT += виджеты

  • Вы повторно запускаете Qt 5 qmake.

Сказав это, я хотел бы напомнить вам, что включение всего модуля не является хорошей идеей, поскольку он включает в себя все, что связано с виджетами. Попробуйте сузить его до заголовков, которые вам действительно нужны.

person lpapp    schedule 10.07.2014
comment
Сужение работает. Но я хочу научиться компилировать приложения, которые должны компилироваться. -Установлен модуль и -Вы повторно запускаете Qt 5 qmake. Как я могу это проверить? - person Ufx; 10.07.2014
comment
@Ufx: запустите /opt/Qt/5.3/Src/qtbase/bin/qmake ... или просто щелкните соответствующий пункт контекстного меню в QtCreator. - person lpapp; 10.07.2014
comment
Осталось проверить «Модуль установлен». Как я могу это проверить? - person Ufx; 10.07.2014
comment
Каталог существует. - person Ufx; 10.07.2014
comment
Это трудно объяснить, потому что вам не хватает основ. Нет, вы не должны проверять сам /opt/Qt/5.3/Src/qtbase/include, но есть ли там каталог QtWidgets... - person lpapp; 10.07.2014

Как вы заметили, структура каталогов Qt изменилась между Qt4 и Qt5. Заголовок QWidget перемещен в каталог QtWidgets. Попробуйте добавить

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

Если это не поможет, попробуйте найти заголовок вручную, используя

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

и каталог, в котором он находится, в INCLUDEPATH

Изменить на основе комментариев из Final Contest.

Я согласен, что обходные пути обычно плохая идея. Чтобы проверить, где 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

Сгенерировать make-файл

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

Флаг виджета интересных деталей добавляет:

  • В моем случае -I/usr/include/qt5/QtWidgets -I/usr/include/qt5/QtGui в INCPATH
  • -DQT_WIDGETS_LIB для переменной DEFINES.
  • -lQt5Widgets -lQt5Gui для библиотек.

Единственная часть, которая должна отличаться, — это пути к QtWidgets и QtGui. Если это неправильно, я бы попробовал переустановить Qt.

person Tobias    schedule 10.07.2014
comment
Это помогает с этой ошибкой. Но теперь новая ошибка: QtWidgets/QtWidgetsDepends: Нет такого файла или каталога #include ‹QtWidgets/QtWidgetsDepends›. Кажется, я понял, что мне нужно сделать. Но зачем официальные примеры в редактировании? Может быть, есть способ включить все каталоги qt в настройках среды? - person Ufx; 10.07.2014
comment
Вы уверены, что /opt/Qt/5.3/Src/qtbase указывает на установленную библиотеку qt? Я бы не ожидал Src на этом пути. В Fedora 20 путь /usr/include/qt5/QtWidgets/. Я не знаю, почему в документации Qt есть ошибки. Вот как я это решил. - person Tobias; 10.07.2014
comment
Плохая идея явно указывать путь включения. QT+=widgets существует по этой причине. Кроме того, OP использует не QWidget header, а QtWidgets. Я думаю, вы запутались. Кроме того, даже если вы включите в это руководство обходной путь, у вас все равно будет вышеупомянутая проблема, которая приведет к включению другого пути и т. д. - person lpapp; 10.07.2014
comment
Добавлено минимальное приложение-виджет, помогающее проверить установку qt. - person Tobias; 10.07.2014

Проверьте, как выглядит ваш файл .pro, прежде чем запускать make. Я обнаружил, что команда «qmake -project» автоматически создает файл .pro, который вызывает ту же ошибку. Теперь я скомпилировал свой проект qt с помощью следующих команд, и ошибка исчезла:

qmake my_project.pro
make
person Colin McGovern    schedule 25.09.2019

Все это очень похоже на то, что наоборот, и у меня была та же проблема временно с 5.6, но ответ мог быть намного проще.

Если вы загружаете много примеров, вы можете сначала добраться до редактора или чего бы то ни было. Если пример был загружен впервые, его необходимо «настроить», что находится на боковой вкладке проектов, которая должна предоставить вам «Настроить», а не «Сборка и запуск». То, что он не всегда прыгает прямо, является недостатком, но также и включение примеров без поддержки по умолчанию (Desktop OpenGL и iOS для двоих).

Пока это не будет сделано, он не разрешит никаких зависимостей за пределами непосредственного проекта, поскольку используемые библиотеки зависят от того, какой компилятор/цель используется (например, MSVS, GNUCC, MinGW, 32/64 бит).

person user4503219    schedule 15.05.2016