Подтвердить что ты не робот

Ошибка QApplication: нет такого файла или каталога

Я установил С++ SDK, у которого есть Qt, но когда я пытаюсь скомпилировать код, связывающий QApplication, он дает мне ошибку:

Error QApplication: no such file or directory

Как связать эти библиотеки? Я искал в каталогах и есть файл с именем QApplication.h; Поэтому я попытался связать его с -I (связать каталог), но он все еще выдавал мне эту ошибку.

4b9b3361

Ответ 1

Чтобы начать работу, ошибка QApplication: no such file or directory означает, что ваш компилятор не смог найти этот заголовок. Это не связано с процессом связывания, как вы упомянули в вопросе.

Флаг -I (верхний регистр i) используется для указания каталога include (headers) (что вам нужно делать), а флаг -L используется для указания библиотеки. Флаг -L (нижний регистр L) используется для связывания приложения с указанной библиотекой.

Но вы можете использовать Qt в своих интересах: Qt имеет систему сборки с именем qmake, что упрощает работу. Например, когда я хочу скомпилировать main.cpp, я создаю файл main.pro. Для образовательных целей, скажем, этот исходный код - простой проект, который использует только QApplication и QDeclarativeView. Соответствующим .pro файлом будет:

TEMPLATE += app
QT += gui declarative
SOURCES += main.cpp

Затем выполните qmake внутри этого каталога, чтобы создать Makefile, который будет использоваться для компиляции вашего приложения, и, наконец, выполнить make, чтобы выполнить задание.

В моей системе этот make выводит:

g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_DECLARATIVE_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/opt/qt_47x/mkspecs/linux-g++ -I. -I/opt/qt_47x/include/QtCore -I/opt/qt_47x/include/QtGui -I/opt/qt_47x/include/QtDeclarative -I/opt/qt_47x/include -I/usr/X11R6/include -I. -o main.o main.cpp
g++ -Wl,-O1 -Wl,-rpath,/opt/qt_47x/lib -o main main.o -L/opt/qt_47x/lib -L/usr/X11R6/lib -lQtDeclarative -L/opt/qt_47x/lib -lQtScript -lQtSvg -L/usr/X11R6/lib -lQtSql -lQtXmlPatterns -lQtNetwork -lQtGui -lQtCore -lpthread

Примечание. Я установил Qt в другой каталог → /opt/qt_47x

Ответ 2

В Qt 5 вам нужно добавить widgets в переменную qmake QT:

 QT += widgets

Ответ 3

Для QT 5

Шаг 1: .pro (в про файле добавьте эти 2 строки)

QT       += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

Шаг 2: В main.cpp заменить код:

#include <QtGui/QApplication> 

с:

#include <QApplication>

Ответ 4

Похоже, что у вас нет установленных библиотек разработки. Установите их, используя:

sudo apt-get install libqt4-dev

Как вы сказали int, комментарии, которые вы их установили, просто переустановите. Теперь. для обновления базы данных локации выполните эту команду $sudo updatedb

Затем $locate QApplication, чтобы проверить, что у вас теперь установлен файл заголовка.

Теперь перейдите в папку, в которой у вас есть код, и введите эти команды

qmake -project
qmake
make

Затем вы можете найти созданный двоичный файл.

В качестве альтернативы вы можете использовать Qt Creator, если хотите графический интерфейс.

Ответ 5

Пожалуйста, убедитесь, что версия qmake, которую вы используете, соответствует версии QT, которую вы хотите использовать.

Конечно, вы можете просто запустить:

$qmake -v

Ваша проблема, по-видимому, является симптомом конфликта версий между QT 3 и 4, как можно видеть здесь:

http://lists.trolltech.com/qt4-preview-feedback/2005-11/thread00013-0.html

Чтобы исправить это, вы можете либо удалить свою старую установку QT, либо конкретно указать qmake-qt4 в своем файле Makefile.

Ответ 6

В Qt5 вы должны использовать QtWidgets вместо QtGui

#include <QtGui/QComboBox>     // incorrect in QT5
#include <QtWidgets/QComboBox>    // correct in QT5

или

#include <QtGui/QStringListModel>    // incorrect in QT5
#include <QtCore/QStringListModel>    // correct in QT5

Ответ 7

вам нужно добавить QT + = виджеты в файле .pro перед первым исполнением, если вы выполнили перед добавлением этой строки, это не сработает, поэтому вам нужно начать создание файла с самого начала.

Ответ 8

Я предлагаю вам обновить SDK и начать новый проект и перекомпилировать все, что у вас есть. Кажется, у вас есть некоторые внутренние ошибки программы. Или вам не хватает пакета.

И делайте то, что сказал Абдиджик.

Ответ 9

Убедитесь, что у вас есть qmake на вашем пути (который qmake) и что он работает (qmake -v) (ЕСЛИ вы должны убить его ctr-c, тогда в вашей среде что-то не так).

Затем выполните следующие действия: http://developer.qt.nokia.com/doc/qt-4.8/gettingstartedqt.html

Ответ 10

Вы можете изменить версию версии. Например, я попробовал QT 5.6.1, но это не сработало. Во-первых, я пробовал QT 5.7.0. Так оно и работало, удачи!:)