Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > [Qt] "hello qt!" QT_BEGIN_HEADER


Автор: dima32 8.10.2008, 23:40
раньше писал на java и вот решил попробовать написать на C++.
Поставил eclipse, g++, QT (работаю под kde)
Консольная версия программы Hello world работает. 
а вот при компиляции простенькой QT программы:

Код
#include "qt4/Qt/qapplication.h"
#include "qt4/Qt/qlabel.h"
int main(int argc, char *argv[0])
{
    QApplication app(argc,argv);
    QLabel *label=new QLabel("hello qt!");
    label->show();
    app.exec();
    return 0;
}

компилятор выдаёт сообщение:
Код

make all 
Building file: ../src/dff.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/dff.d" -MT"src/dff.d" -o"src/dff.o" "../src/dff.cpp"
/usr/include/qt4/Qt/qapplication.h:59: error: ‘QT_BEGIN_HEADER’ does not name a type
/usr/include/qt4/Qt/qapplication.h:79: error: invalid function declaration
/usr/include/qt4/Qt/qapplication.h:358: error: ‘QT_END_HEADER’ does not name a type
/usr/include/qt4/Qt/qlabel.h:50: error: invalid function declaration
../src/dff.cpp:11: error: expected constructor, destructor, or type conversion before ‘int’
make: *** [src/dff.o] Error 1


как с эти боротья?

Автор: Fin 9.10.2008, 00:16
Makefile сам писал или через qmake?
Такой код не пробовал
Код

#include <QApplication>
#include <QLabel>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QLabel *label = new QLabel("<h2><i>Hello </i><font color=red> Qt!</font></h2>");
    label->show();
    return app.exec();
}

Автор: dima32 9.10.2008, 00:35
приведённая программа при компиляции выаёт

Код

**** Build of configuration Debug for project dff ****

make all 
Building file: ../src/dff.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/dff.d" -MT"src/dff.d" -o"src/dff.o" "../src/dff.cpp"
../src/dff.cpp:1:24: warning: QApplication: No such file or directory
../src/dff.cpp:2:18: warning: QLabel: No such file or directory
../src/dff.cpp: In function ‘int main(int, char**)’:
../src/dff.cpp:5: error: ‘QApplication’ was not declared in this scope
...........................................................


make файлы не писал -  я создал проект в eclipse


в директории Debug я нашёл make файл  (см аттач)

Автор: Fin 9.10.2008, 00:57
Ну скажем так, не совсем корректный Makefile для Qt библиотеки.
в консоле зайди в директорию, где у тебя лежит проект. Набери команду qmake -project. У тебя должен появится файл с именем имя_каталога.pro. Обратно запускаеш qmake, только в качестве параметра указываеш этот файл, пример: qmake hello.pro
У тебя должен создаться файл Makefile. Теперь можно и запускать make. make - компилирует проект. make clean удаляет все временные и объектные файлы и также и бинарник. Иногда это бывает нужно, Когда к проекту подключаются новые библиотеки.

Автор: dima32 9.10.2008, 01:35
я создал новую директорию t1
и в ней
Код

dima@rdvs:~/eclipse_cpp/workspace/t1$ qmake -project
dima@rdvs:~/eclipse_cpp/workspace/t1$ qmake t1.pro 
QFile::open: No file name specified
QFile::open: No file name specified
.................................
QFile::open: No file name specified
qt_config.prf:8: Unknown test function: debug
qt_functions.prf:1: Unknown test function: defineReplace
qt_functions.prf:18: Unknown test function: defineTest


да и ещё до этого  я нашёл  в интернете упоминания про переменные окружения и выставил
export QTDIR=/usr/share/qt4
export PATH=$PATH:$QTDIR/bin

Автор: bsa 9.10.2008, 23:11
dima32, тебе нужно создать проект QT Application (или как там его) - для этого нужно установить интегратор (искать на сайте троллей). Иначе у тебя будут проблемы (такие, как сейчас).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)