Использовать Qt3 вместо Qt4 (небольшая загвоздка...)

Модератор: Модераторы разделов

blackdevil
Бывший модератор
Сообщения: 2751
Статус: Добровольный помощник
ОС: Ubuntu (lts)

Использовать Qt3 вместо Qt4

Сообщение blackdevil »

Привет форуму!
Возникла небольшая проблемка. Я заканчиваю курсы по С++ и мне предстоит в ближайшее время написать выпускную программу. Программа должна быть кросплатформенной и иметь графическую морду. Поэтому остановил свой выбор на Qt.
У меня есть отличный учебник по Qt3 авторов Jasmin Blanchette, Mark Summerfield "Разработка графического интерфейса с помощью библиотеки Qt3". Операционная система на которой я сижу - OpenSuse 10.2 i386.
Итак, начинаю компилировать первый же пример из книги:

Код: Выделить всё

#include <qapplication.h>
#include <qlabel.h>

int main(int argc, char *argv[])
{
     QApplication app(argc, argv);
     QLabel *label = new QLabel("Hello, Qt!", 0);
     app.setMainWidget(label);
     label->show();
     return app.exec();
}


Все идет нормально (qmake -project затем qmake hello.pro)но вот что я получаю на стадии make:
andrew@DELL:~/Desktop/hello> make
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/default -I. -I/usr/include/QtCore -I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include/QtGui -I/usr/include -I. -I. -I. -o hello.o hello.cpp
hello.cpp: In function ‘int main(int, char**)’:
hello.cpp:7: error: ‘class QApplication’ has no member named ‘setMainWidget’
make: *** [hello.o] Ошибка 1


Я так понимаю данная ошибка вызвана тем что при компиляции используется библиотека Qt4 в которой часть классов уже изменена...Как избежать этой проблемы? Из литературы по Qt4 ничего такого же простого и понятного и в то же время детального как мой учебник найти не могу да и вообще с литературой по Qt4 напряг...Поэтому хочу использовать Qt3. В системе он установлен (смотрел через Yast). Подскажите как быть? Как компилировать программы? Как избежать таких ошибок в будущем?
Простые решения для Ubuntu-подобных систем: смотрим тут
Спасибо сказали:
Аватара пользователя
Liksys
Сообщения: 2910

Re: Использовать Qt3 вместо Qt4

Сообщение Liksys »

Найти каталог, в котором установленый бинарники Qt3 и использовать полный путь (можно создать ссылки, типа qmake-qt3).
Но все же, если у тебя есть Qt4, то используй ее, код Qt3 и Qt4 различен, но не сильно, я переучивался дня два, да и в венде ты сможешь собрать прогу только в случае Qt4, поскольку Qt3 в венде коммерческий. Qt4 ессть под GPL на большинстве систем, включая венду.
Спасибо сказали:
blackdevil
Бывший модератор
Сообщения: 2751
Статус: Добровольный помощник
ОС: Ubuntu (lts)

Re: Использовать Qt3 вместо Qt4

Сообщение blackdevil »

Извините, я боян :) Точно такая же тема уже была Помогите решить проблему с Qt хотя поиск по ключевому слову Qt почему-то ничего не обнаружил...хотя искал я наспех ))
Спасибо за ответ! Попробую исправить и юзать qt4
Простые решения для Ubuntu-подобных систем: смотрим тут
Спасибо сказали:
Аватара пользователя
Liksys
Сообщения: 2910

Re: Использовать Qt3 вместо Qt4

Сообщение Liksys »

Да ничего :)
Если будут вопросы по Qt - создавай тему, не стесьняйся)))
Спасибо сказали:
blackdevil
Бывший модератор
Сообщения: 2751
Статус: Добровольный помощник
ОС: Ubuntu (lts)

Re: Использовать Qt3 вместо Qt4

Сообщение blackdevil »

Сейчас вот посмотрел assistant и нашел QApplication::setMainWidget() с полным описанием. Ни слова не сказано что его больше не следует использовать! А в той теме ссылку на которую я привел люди откуда то нашли вот что:
QApplication::setMainWidget() is no longer used. When all an application's windows are closed, the application will exit normally.

Непойму толи assistant у меня от 3-ей версии толи где-то в другом месте доки лежат о том что изменилось...Не подскажете где копать обо всех таких вот изменениях? Не могу в assistant-е найти :(
Простые решения для Ubuntu-подобных систем: смотрим тут
Спасибо сказали:
Аватара пользователя
eduard_pustobaev
Сообщения: 2629
Статус: Ленивец
ОС: Arch/Debian.

Re: Использовать Qt3 вместо Qt4

Сообщение eduard_pustobaev »

blackdevil писал(а):
17.09.2007 19:57
Сейчас вот посмотрел assistant и нашел QApplication::setMainWidget() с полным описанием. Ни слова не сказано что его больше не следует использовать!

В assistant для Qt4 нет инфы о таком методе.
Зато в Qt 4.3: Porting to Qt4 -> QApplication есть искомое "QApplication::setMainWidget() is no longer used. When all an application's windows are closed, the application will exit normally." .
Непойму толи assistant у меня от 3-ей версии толи где-то в другом месте доки лежат о том что изменилось...Не подскажете где копать обо всех таких вот изменениях? Не могу в assistant-е найти :(

Скорей всего запускается действительно асистант для Qt3.

Код: Выделить всё

locate assistant | grep bin
В дисгармонии со вселенной.
Спасибо сказали:
Аватара пользователя
Liksys
Сообщения: 2910

Re: Использовать Qt3 вместо Qt4

Сообщение Liksys »

А ты посмотри, на главной странице Assistant`а, там написано, от какой он версии.
Спасибо сказали: