Main cpp 3 10 error qapplication file not found

Ошибка: QApplication: нет такого файла или каталога C++ Qt Решение и ответ на вопрос 1867265

0 / 0 / 0

Регистрация: 08.01.2016

Сообщений: 37

1

03.12.2016, 20:39. Показов 9516. Ответов 9


Для курсовой в целях

стырить и выдать за своё

ознакомления, скачал исходники программы на qt (текстовый редактор). Но при запуске выдается ошибка «Ошибка: QApplication: нет такого файла или каталога, а за ним и другие классы для работы с формой тоже не подключены.
Вопрос: как подключить эти библиотеки. Или лучше как правильно запускать приложение, которого ты не писал.
PS Свои формы создавал, и QApplication и др. прекрасно работала.

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



7275 / 6220 / 2833

Регистрация: 14.04.2014

Сообщений: 26,871

03.12.2016, 20:47

2

А для какой версии Qt эта программа? Там структура-то современная?



0



0 / 0 / 0

Регистрация: 08.01.2016

Сообщений: 37

03.12.2016, 20:52

 [ТС]

3

nmcf, ничего особо примечательного кроме чрезмерного использования указателей. Для какой версии qt писали не знаю. Но залили в 2013. Да и важно ли это? Пока ругается только на QApplication



0



7275 / 6220 / 2833

Регистрация: 14.04.2014

Сообщений: 26,871

03.12.2016, 21:01

4

Разумеется, важно. Там pro-файл может быть другой.
Что не так с QApplication? Текст ошибки где?



0



0 / 0 / 0

Регистрация: 08.01.2016

Сообщений: 37

03.12.2016, 21:22

 [ТС]

5

nmcf, ненавижу qt! Перезапустил creator и сейчас у него уже ошибка:
Ошибка при сборке/установке проекта TextEditor (комплект: Qt 5.6.1 (msvc2015_64))
Во время выполнения этапа «qmake». В проекте не могу подключить другой компилятор (ОНИ НЕ ВИДЯТСЯ)

Ок, вот:

Код

QWizard: No such file or directory
 #include <QWizard>

#include <QApplication> подсвечивает жёлтым и пишет что такого файла нет.



0



7275 / 6220 / 2833

Регистрация: 14.04.2014

Сообщений: 26,871

03.12.2016, 21:30

6

Покажи pro-файл и main().



0



Gadwil

0 / 0 / 0

Регистрация: 08.01.2016

Сообщений: 37

03.12.2016, 21:31

 [ТС]

7

nmcf,
.pro

Код

#-------------------------------------------------
#
# Project created by QtCreator 2013-10-10T16:01:30
#
#-------------------------------------------------

QT       += core gui

TARGET = TextEditor
TEMPLATE = app


SOURCES += main.cpp
        mainwindow.cpp printer.cpp texteditor.cpp wizard.cpp

HEADERS  += mainwindow.h printer.h texteditor.h wizard.h

FORMS    += mainwindow.ui

main

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char** argv) {
    QApplication app(argc, argv);
 
    QCoreApplication::setOrganizationName("MaximCorporation");
    QCoreApplication::setApplicationName("TextEditor");
 
    MainWindow window;
 
    window.show();
 
    return app.exec();
}



0



7275 / 6220 / 2833

Регистрация: 14.04.2014

Сообщений: 26,871

03.12.2016, 21:34

8



0



0 / 0 / 0

Регистрация: 08.01.2016

Сообщений: 37

03.12.2016, 21:38

 [ТС]

9

nmcf, nmcf, да, это дало результат, но он теперь что то другое не видит. Может проще скачать старый компилятор?



0



7275 / 6220 / 2833

Регистрация: 14.04.2014

Сообщений: 26,871

03.12.2016, 21:39

10

Ты очистку проекта и запуск qmake выполнили перед сборкой? Там в меню это есть.
Компилятор не при чём.



0



@jsulm Hello, I am having a similar issue to @Mijaz. I am trying to use Qt 5.11 to cross compile for a STM32MP157c-DK2 development board. I have successfully loaded images to the board from a qml file but my cpp files are riddled with errors including «use of undeclared identifier ‘QCoreApplication’. I have tried adding #include <QApplication> and QT += widgets with no luck. Here is my main.cpp file and my pro file.

main.cpp

#include <QGuiApplication>
#include <QQmlApplicationEngine>

#include <QApplication>
#include <QLabel>

#include <QQmlEngine>
#include <QTextCodec>
#include <QtGui>

int main(int argc, char *argv[])
{
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

    QGuiApplication app(argc, argv);

    QQmlApplicationEngine engine;
    const QUrl url(QStringLiteral("qrc:/main.qml"));
    QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
                     &app, [url](QObject *obj, const QUrl &objUrl) {
        if (!obj && url == objUrl)
            QCoreApplication::exit(-1);
    }, Qt::QueuedConnection);
    engine.load(url);

    return app.exec();
}

pro file

QT += quick widgets core gui

CONFIG += c++11 qmltypes qt

# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Refer to the documentation for the
# deprecated API to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += 
        main.cpp

RESOURCES += qml.qrc

# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH =

# Additional import path used to resolve QML modules just for Qt Quick Designer
QML_DESIGNER_IMPORT_PATH =

# Default rules for deployment.
#qnx: target.path = /tmp/$${TARGET}/bin
#else: unix:!android: target.path = /opt/$${TARGET}/bin
#!isEmpty(target.path): INSTALLS += target
TARGET = stm32mp1Test
    target.files = stm32mp1Test
    target.path = /home/root
INSTALLS += target

Thanks for the help.

  • Печать

Страницы: [1]   Вниз

Тема: QT и c++  (Прочитано 4456 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн
НеФормат

Привет, всем! Начал учить QT
Первый код:

Вводу g++ index.cpp -o index.bin
Выдаёт:

Пробовал ставить всякие библиотеки, не помогло
P.S. — В QtCretor то же самое  :o
Что делать?


Оффлайн
Olej

index.cpp:2:24: fatal error: QApplication: Нет такого файла или каталога
compilation terminated.

Что делать?

1. ну так нет же такого файла!

что делать?
2. идти в дефаулт include (/usr/include) и убеждаться, что там нет такого файла…

3. что дальше делать? разбираться какой (qt3, qt4) установлен, установлен ли, и куда (prefix):

[olej@notebook c++]$ env | grep QT
QTDIR=/usr/lib/qt-3.3
QTINC=/usr/lib/qt-3.3/include
QT_IM_MODULE=xim
QTLIB=/usr/lib/qt-3.3/lib
а потом убеждаться, что там такой файл действительно есть:

[olej@notebook include]$ ls /usr/lib/qt-3.3/include/qappl*
/usr/lib/qt-3.3/include/qapplication.h
а дальше правильно указывать в команде компиляции ;) … да ещё и библиотеки Qt там же указать ;)

4. у вас, скорее всего, qt4 — так ищите где и как он поставлен! — всё дело в путях.

« Последнее редактирование: 26 Февраля 2012, 03:40:42 от Olej »


Оффлайн
RazrFalcon

Qt Cretor то же самое

Не может быть.

qt-3.3 — очень смешно, вы его его нарыли-то?


Оффлайн
Olej

Qt Cretor то же самое

Не может быть.

qt-3.3 — очень смешно, вы его его нарыли-то?

qt3 — это может и очень смешно (кто понимает, или напротив, кто ничего не понимает) … но только у меня в системе вообще всё, что относится к Qt не ставилось просто, мне оно не надо… то, что показано — это та часть, которая доставлялась по зависимостям с каким-то пакетом из KDE.

Я вам показал как и где искать проблемы с установленным (возможно) у вас Qt:
— ищите пути установки (то, что задаётся prefix при сборке пакета Qt, вами или, скорее, дстрибьюторами вашими)…
— указывайте (как -I, -L, -l) их в опциях gcc, make или в переменных окружения env.


Оффлайн
VlaoMao

Можно пойти проще.
В папке с проектом

qmake -project
qmake
make
profit.


Оффлайн
Olej

Можно пойти проще.
В папке с проектом
qmake -project
qmake
make
profit.

конечно, это обычный способ сборки с Qt, но:
— для этого нужно создать проект;
— автор хочет это сделать просто компилятором GCC … с наскоку — но повозиться с такой сборкой имеет смысл (1 раз ;)) для понимания что (в GCC) и откуда берётся.
 


Оффлайн
VlaoMao

Для этого НЕ НУЖНО создавать проект, qmake его сам создаст.
После работы qmake в папке будет Makefile, который можно посмотреть/подправить/выучить для своих целей.

$ ls
main.cpp

$ qmake -project && ls
main.cpp  qt_ex.pro

$ qmake && ls
main.cpp  Makefile  qt_ex.pro

« Последнее редактирование: 26 Февраля 2012, 13:35:40 от VlaoMao »


Оффлайн
Olej

Для этого НЕ НУЖНО создавать проект, qmake его сам создаст.

Да, это я что-то ступил, уже несколько не смотрел в сторону Qt и со всем, что связано с KDE.
Тем более, то что вы подсказали, показывает как GCC использует специфические установки Qt.

Переписал я по-быстренькому программу нашего топик-спикера под свой «дремучий» ;) Qt:

#include "qapplication.h"
#include <qdialog.h>

int main(int argc, char** argv)
{
    QApplication app(argc, argv);
    QDialog  startDialog;

    startDialog.setMinimumWidth(200);
    startDialog.show();

    return app.exec();
}

Очень хорошо видно, как qmake подставляет дефаултные пути для -I и для -L :

[olej@notebook Qt]$ qmake -project
[olej@notebook Qt]$ ls
index.cc  Qt.pro
[olej@notebook Qt]$ qmake
[olej@notebook Qt]$ ls
index.cc  Makefile  Qt.pro
[olej@notebook Qt]$ make
g++ -c -pipe -Wall -W -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronou
g++  -o Qt index.o    -L/usr/lib/qt-3.3/lib -lqt-mt -lXext -lX11 -lm
[olej@notebook Qt]$ ls
index.cc  index.o  Makefile  Qt  Qt.pro
[olej@notebook Qt]$ ./Qt
^C

В qt4 будет то же, только с другими именами.


Оффлайн
VlaoMao

Ну во-первых, Qt != KDE.
А во-вторых надо использовать не

#include "qapplication.h"
#include <qdialog.h>
А

#include <QApplication>
#include <QDialog>

$ cat /usr/include/QtGui/QApplication
#include "qapplication.h"
Хотя вполне возможно, что на другой платформе содержимое файла QApplication будет другим, поэтому и надо подключать именно QApplication.
Хотя да, возможно в Qt3 и нет отдельного QApplication, есть qapplication.h, не думаю что сейчас кто-то ещё сильно пользуется Qt3.

« Последнее редактирование: 26 Февраля 2012, 14:30:07 от VlaoMao »


Оффлайн
Olej

Ну во-первых, Qt != KDE.

конечно Qt != KDE, но если кто-то живёт в другом DE, оконном окружении, например QNOME, да и все другие, то он и не пересекается никаким образом ни с Qt, ни с исполняющей системой Qt… а исполняющая система Qt, в таких случаях, и устанавливается (по зависимостям) при установке чего-то из ПО из комплекта KDE.

ведь в других DE/WM, как вы сами понимаете, есть масса других инструментов построения GUI, когда это нужно по-быстренькому что-то сделать: Tcl/Tk(wish), GTK, wxWidget и др. 

только таким образом Qt получается часто косвенно связано с KDE: где KDE — там Qt, а где KDE нет, то на таких рабочих местах часто и Qt нет. ;)

А во-вторых надо использовать не
#include "qapplication.h"
#include <qdialog.h>
А#include <QApplication>
#include <QDialog>
$ cat /usr/include/QtGui/QApplication
#include "qapplication.h"
Хотя вполне возможно, что на другой платформе содержимое файла QApplication будет другим, поэтому и надо подключать именно QApplication.

а вот это неверно!
/usr/include/QtGui — появится только тогда, когда вы специально установите средства разработки Qt, что-то типа пакета qt-develop, если этого не делать, то и каталога такого нет (как и входящих в него файлов).
а вот исполняющая система (инклуды, библиотеки) может устанавливаться с приложениями, и она присутствует всегда, вот те «qapplication.h», на которые именно и указывает -I опция при построении проекта.

Хотя да, возможно в Qt3 и нет отдельного QApplication, есть qapplication.h, не думаю что сейчас кто-то ещё сильно пользуется Qt3.

великое множество существующих и эксплуатируемых пакетов благополучно работают на Qt3, ничего чтоб особо существенного (не с точки зрения разработчика, а эксплуатации) Qt4 так и не принёс (например обещанной производительности), так что многие и многие давние пользователи Linux с появлением KDE4 от него отказались, а автоматом и от использования Qt4.


Оффлайн
НеФормат

Ну во-первых, Qt != KDE.

конечно Qt != KDE, но если кто-то живёт в другом DE, оконном окружении, например QNOME, да и все другие, то он и не пересекается никаким образом ни с Qt, ни с исполняющей системой Qt… а исполняющая система Qt, в таких случаях, и устанавливается (по зависимостям) при установке чего-то из ПО из комплекта KDE.

ведь в других DE/WM, как вы сами понимаете, есть масса других инструментов построения GUI, когда это нужно по-быстренькому что-то сделать: Tcl/Tk(wish), GTK, wxWidget и др. 

только таким образом Qt получается часто косвенно связано с KDE: где KDE — там Qt, а где KDE нет, то на таких рабочих местах часто и Qt нет. ;)

А во-вторых надо использовать не
#include "qapplication.h"
#include <qdialog.h>
А#include <QApplication>
#include <QDialog>
$ cat /usr/include/QtGui/QApplication
#include "qapplication.h"
Хотя вполне возможно, что на другой платформе содержимое файла QApplication будет другим, поэтому и надо подключать именно QApplication.

а вот это неверно!
/usr/include/QtGui — появится только тогда, когда вы специально установите средства разработки Qt, что-то типа пакета qt-develop, если этого не делать, то и каталога такого нет (как и входящих в него файлов).
а вот исполняющая система (инклуды, библиотеки) может устанавливаться с приложениями, и она присутствует всегда, вот те «qapplication.h», на которые именно и указывает -I опция при построении проекта.

Хотя да, возможно в Qt3 и нет отдельного QApplication, есть qapplication.h, не думаю что сейчас кто-то ещё сильно пользуется Qt3.

великое множество существующих и эксплуатируемых пакетов благополучно работают на Qt3, ничего чтоб особо существенного (не с точки зрения разработчика, а эксплуатации) Qt4 так и не принёс (например обещанной производительности), так что многие и многие давние пользователи Linux с появлением KDE4 от него отказались, а автоматом и от использования Qt4.

Спасибо, помогло =)


Оффлайн
VlaoMao

Ладно, пофиг на все выкладки, всё равно спор ни к чему не приведёт.

а вот это неверно!
/usr/include/QtGui — появится только тогда, когда вы специально установите средства разработки Qt, что-то типа пакета qt-develop, если этого не делать, то и каталога такого нет (как и входящих в него файлов).
а вот исполняющая система (инклуды, библиотеки) может устанавливаться с приложениями, и она присутствует всегда, вот те «qapplication.h», на которые именно и указывает -I опция при построении проекта.

Может в Ubuntu и так, не скажу. Скажу точно насчёт ArchLinux:

$ pkgfile `ls /usr/include/QtGui/*`
extra/qt
QtCreatora не видно, все файлы в этом каталоге принадлежат пакету qt. Но опять же, повторюсь, что это актуально только для ArchLinux, в Ubuntu всё может быть по-другому, поэтому я и писал про спор, возможно просто мы друг друга не поняли.


  • Печать

Страницы: [1]   Вверх

Понравилась статья? Поделить с друзьями:
  • Main cpp 13 1 error expected unqualified id before token
  • Make error 2 ubuntu
  • Main controller data error mavic air как починить
  • Make error 193
  • Main control system error