0 / 0 / 0 Регистрация: 08.01.2016 Сообщений: 37 |
|
1 |
|
03.12.2016, 20:39. Показов 9516. Ответов 9
Для курсовой в целях
ознакомления, скачал исходники программы на qt (текстовый редактор). Но при запуске выдается ошибка «Ошибка: 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-файл может быть другой.
0 |
0 / 0 / 0 Регистрация: 08.01.2016 Сообщений: 37 |
|
03.12.2016, 21:22 [ТС] |
5 |
nmcf, ненавижу qt! Перезапустил creator и сейчас у него уже ошибка: Ок, вот: Код QWizard: No such file or directory #include <QWizard>
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, Код #------------------------------------------------- # # 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
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 то же самое
Что делать?

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
profit.
qmake
make

Olej
Можно пойти проще.
В папке с проектомqmake -project
profit.
qmake
make
конечно, это обычный способ сборки с 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
Хотя вполне возможно, что на другой платформе содержимое файла QApplication будет другим, поэтому и надо подключать именно QApplication.
#include "qapplication.h"
Хотя да, возможно в 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
Хотя вполне возможно, что на другой платформе содержимое файла QApplication будет другим, поэтому и надо подключать именно QApplication.
#include "qapplication.h"
а вот это неверно!
/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
Хотя вполне возможно, что на другой платформе содержимое файла QApplication будет другим, поэтому и надо подключать именно QApplication.
#include "qapplication.h"а вот это неверно!
/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/*`
QtCreatora не видно, все файлы в этом каталоге принадлежат пакету qt. Но опять же, повторюсь, что это актуально только для ArchLinux, в Ubuntu всё может быть по-другому, поэтому я и писал про спор, возможно просто мы друг друга не поняли.
extra/qt
- Печать
Страницы: [1] Вверх