Кому нибудь приходилось портировать проекты из Qt3 в Qt4? Попытался я поучиться писать программы в Qt под Виндой. Скачал свеженький релиз Qt4.2.2, нарисовал программку из учебника Qt3, и начал компилить. Но компилятор не нашел файлов qhbox.h и других. Начал выяснять - оказывается Qt3 исходники надо портировать в Qt4. Есть и утилита: qt3to4 - портирует исходник и файл проекта - так написано в Assistant'е. Запустил я ее - Вот что она сделала:
#include<qapplication.h>
#include<q3hbox.h> // заменено qhbox.h на q3hbox.h
#include<qslider.h>
#include<qspinbox.h>
using namespace Qt;
int main(int argc, char* argv[]) {
QApplication myapp(argc, argv);
QHbox* hbox=new QHbox(0);
hbox->setCaption("Введите Ваш возраст");
hbox->setMargin(6);
hbox->setSpacing(6);
QSpinbox *spinbox=new QSpinBox(hbox);
QSlider *slider=new QSlider(hbox);
spinbox->setRange(0, 150);
slider->setRange(0, 150);
QObject::connect(spinbox, SIGNAL(valueChanged(int)), slider,SLOT(setValue(int)));
QOject::connect(slider, SIGNAL(valueChanged(int), spinbox, SLOT(setValue(int)));
spinbox->setValue(40);
myapp.setMainWidget(hbox);
hbox->show();
return myapp.exec();
}
В файле проекта утилита сделала следующие изменения:
#The following line was inserted by qt3to4
QT += qt3support
#The following line was inserted by qt3to4
QT +=
Однако запуск make выдает следующую информацию:
C:\Programming\Qt\4.2.2\src\Projects\Spinbox>make
qmake -win32 -o Makefile Spinbox.pro
mingw32-make -f Makefile.Release
mingw32-make[1]: Entering directory `C:/Programming/Qt/4.2.2/src/Projects/Spinbox'
g++ -c -O2 -O2 -frtti -fexceptions -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DQ
T_QT3SUPPORT_LIB -DQT3_SUPPORT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"C:
/Programming/Qt/4.2.2/include/QtCore" -I"C:/Programming/Qt/4.2.2/include/QtCore" -I"C:/Programming/Q
t/4.2.2/include/QtGui" -I"C:/Programming/Qt/4.2.2/include/QtGui" -I"C:/Programming/Qt/4.2.2/include/
Qt3Support" -I"C:/Programming/Qt/4.2.2/include/Qt3Support" -I"C:/Programming/Qt/4.2.2/include" -I"."
-I"C:/Programming/Qt/4.2.2/include/ActiveQt" -I"tmp\moc\release_shared" -I"." -I"..\..\..\mkspecs\w
in32-g++" -o tmp\obj\release_shared\spinbox.o spinbox.cpp
spinbox.cpp: In function `int qMain(int, char**)':
spinbox.cpp:9: error: `QHbox' undeclared (first use this function)
spinbox.cpp:9: error: (Each undeclared identifier is reported only once for each function it appears
in.)
spinbox.cpp:9: error: `hbox' undeclared (first use this function)
spinbox.cpp:9: error: `QHbox' has not been declared
spinbox.cpp:13: error: `QSpinbox' undeclared (first use this function)
spinbox.cpp:13: error: `spinbox' undeclared (first use this function)
spinbox.cpp:18: error: `QOject' has not been declared
spinbox.cpp:18:80: macro "SIGNAL" passed 3 arguments, but takes just 1
spinbox.cpp:18: error: `SIGNAL' undeclared (first use this function)
mingw32-make[1]: *** [tmp\obj\release_shared\spinbox.o] Error 1
mingw32-make[1]: Leaving directory `C:/Programming/Qt/4.2.2/src/Projects/Spinbox'
mingw32-make: *** [release] Error 2
Фактически, до портирования было то же самое, только вдобавок была еще строка, что файл qhbox.h not found.
Кто знает, что еще надо менять, помогите пожалуйста!