Seite 1 von 3

Lösungsansatz: Qt 4 Programmierung mit Eclipse >= 3.1.2

Verfasst: 27. Februar 2006 13:16
von kowi1134
Hallo,

für alle die gerne Qt4 unter Windows programmieren wollen und eine kostenlose IDE benutzen möchten, habe ich eine Anleitung für Eclipse geschrieben: http://konrad.plothe-kleine.de/archives/14

Dies ist die erste Version (1.1) der Anleitung.

Viel Spass bei Programmieren!

Ciao Konrad

PS: Ich würde mich riesig über eure Kommentare und Kritiken freuen.

Verfasst: 27. Februar 2006 13:55
von m.trix
Hallo erstmal!

Ich find Anleitung sehr gelungen. Hab jetz aber noch keine Wertung abgegeben, weil ich's erstmal ausprobieren will. :wink:

Was ich noch interessant finden würde, wäre wie man den moc noch mitreinbringt. Eine Datei wie in deinem Bsp. ist ja meist kein Problem, am moc mit mehreren Datein hängts dann meistens.
Das kann sich allerdings erübrigen, da ich nicht weis was Eclipse kann. Vielleicht läuft's ja wie beim Studio.

Ich werd's auf jeden Fall in den nächsten Tagen testen. Jetz 'muss' ich erstmal Fasching treiben...

Verfasst: 27. Februar 2006 14:06
von Mitsu
Danke für die Anleitung - finde ich hilfreich. Habe selber `ne
ganze Weile rumgebastelt, weil mir Eclipse / CDT noch
neu war.

Unter http://my.opera.com/NoobSaibot/blog/show.dml/47063
gibt`s übrigens noch ein kleines Tutorial zum gleichen Thema...

Verfasst: 27. Februar 2006 21:00
von BartSimpson
Nur 2 Fragen bleiben noch.
Wie muss man jedesmal per Hand die .pro Datei bearbeiten wenn man eine neue c++/h Datei einfügen will? Und wie schaut es mit der Unterstützung von Qt Resourcen aus?
Ich glaube mich zu erinnern, das es ein Projekt gab(oder noch gibt), wass mit der Kompletten Qt integration in Clipse beschäftugt. Aber dafür kann ich meine Finger nicht ins Feuer legen.
Sonst sieht es sehr vielversprechend aus.

Verfasst: 28. Februar 2006 08:17
von kowi1134
BartSimpson hat geschrieben:Nur 2 Fragen bleiben noch.
Wie muss man jedesmal per Hand die .pro Datei bearbeiten wenn man eine neue c++/h Datei einfügen will?
Man könnte auch einfach nochmal

Code: Alles auswählen

qmake -project && qmake
laufen lassen.
Und wie schaut es mit der Unterstützung von Qt Resourcen aus?
Ich glaube mich zu erinnern, das es ein Projekt gab(oder noch gibt), wass mit der Kompletten Qt integration in Clipse beschäftugt. Aber dafür kann ich meine Finger nicht ins Feuer legen.
Mein Prof. meinte das auch. Mal abwarten oder rausfinden wie dieses gute Stück heisst :-).
Sonst sieht es sehr vielversprechend aus.
Vielen Dank!

Verfasst: 28. Februar 2006 13:58
von Querdenker
Einfach, genial, beispielhaft :wink:

Nachdem eigentlich alles glatt gelaufen ist, doch ein Fehlerchen:

Es wird nicht kompiliert. Es funktioniert zwar wie üblich auf der Command.cmd, aber nicht über Eclipse.
Hier läuft der Compiler durch und am Ende steht da:

cannot find -lqtmaind

Verfasst: 28. Februar 2006 16:10
von kowi1134
Querdenker hat geschrieben:Einfach, genial, beispielhaft :wink:
Danke
Querdenker hat geschrieben:Nachdem eigentlich alles glatt gelaufen ist, doch ein Fehlerchen:

Es wird nicht kompiliert. Es funktioniert zwar wie üblich auf der Command.cmd, aber nicht über Eclipse.
Hier läuft der Compiler durch und am Ende steht da:

cannot find -lqtmaind
Versuch mal einen Rechtsklick auf den Projectordner und wähle dann "Rebuild Project" aus. Komischerweise funktioniert es dann bei mir

Verfasst: 28. Februar 2006 16:21
von BartSimpson
du versuchts die Debugversion zu bauen. Haste auch die Debugversion von Qt installiert?

Verfasst: 28. Februar 2006 16:58
von Querdenker
Hi,

wie gesagt: Mittels make auf der Console wird das Proggie anstandslos kompiliert. Mit Eclipse läuft auch alles durch, bis aber dem o.g. Fehler. Irgendeine Einstellung muss noch gesetzt werden. Es könnte auch an einer Umgebungsvariablen liegen, weil ich Qt4.1.1 erst jetzt neu installiert habe - auf DIESEM Rechner.
Wenns läuft, versuche ich Kowie's Anleitung etwas zu ergänzen (habe da was gefunden ;) ).

Verfasst: 28. Februar 2006 19:28
von Querdenker
Querdenker hat geschrieben:Hi,

wie gesagt: Mittels make auf der Console wird das Proggie anstandslos kompiliert. Mit Eclipse läuft auch alles durch, bis aber dem o.g. Fehler. Irgendeine Einstellung muss noch gesetzt werden. Es könnte auch an einer Umgebungsvariablen liegen, weil ich Qt4.1.1 erst jetzt neu installiert habe - auf DIESEM Rechner.
Wenns läuft, versuche ich Kowie's Anleitung etwas zu ergänzen (habe da was gefunden ;) ).
P.S.: Das Ganze auf einem anderen PC getestet, der schon länger Qt Entwicklungsrechner ist und das Ganze läuft! Auch hier aber der Fehler in der Konsolenausgabe, während das Ding aber insgesamt eine EXE erstellt!
Seltsam ... wenn man's weis ist es aber egal 8) 8)

WELCOME ECLIPSE!

Probleme beim rebuild

Verfasst: 2. März 2006 19:05
von tommy_gun
hallo,

habe versucht mit Hilfe der Anleitung das calculatorform beispiel zu kompilieren. Erhalte nun folgende Fehlermeldungen:

calculatorform.cpp:24:21: QtUiTools: No such file or directory
calculatorform.cpp: In constructor `CalculatorForm::CalculatorForm(QWidget*)':
calculatorform.cpp:32: error: `QUiLoader' undeclared (first use this function)
calculatorform.cpp:32: error: (Each undeclared identifier is reported only once for each function it appears in.)
calculatorform.cpp:32: error: expected `;' before "loader"
calculatorform.cpp:36: error: `loader' undeclared (first use this function)
mingw32-make.exe[1]: *** [debug\calculatorform.o] Error 1
mingw32-make.exe[1]: Leaving directory `D:/Thoemus_Stuff/Prg's/calculatorbuilder'
D:\MinGW\bin\mingw32-make.exe: *** [debug-all] Error 2

was mache ich falsch?

Danke für die Hilfe

Re: Probleme beim rebuild

Verfasst: 3. März 2006 08:46
von kowi1134
tommy_gun hat geschrieben:hallo,

habe versucht mit Hilfe der Anleitung das calculatorform beispiel zu kompilieren. Erhalte nun folgende Fehlermeldungen:

calculatorform.cpp:24:21: QtUiTools: No such file or directory
calculatorform.cpp: In constructor `CalculatorForm::CalculatorForm(QWidget*)':
calculatorform.cpp:32: error: `QUiLoader' undeclared (first use this function)
calculatorform.cpp:32: error: (Each undeclared identifier is reported only once for each function it appears in.)
calculatorform.cpp:32: error: expected `;' before "loader"
calculatorform.cpp:36: error: `loader' undeclared (first use this function)
mingw32-make.exe[1]: *** [debug\calculatorform.o] Error 1
mingw32-make.exe[1]: Leaving directory `D:/Thoemus_Stuff/Prg's/calculatorbuilder'
D:\MinGW\bin\mingw32-make.exe: *** [debug-all] Error 2

was mache ich falsch?

Danke für die Hilfe
Hallo!

Also ich habe das Programm mal als Archiv-Export in den Anhang gepackt. Es läuft so weit, wirft aber immer die folgenden Compilermeldungen aus. Den Name habe ich jetzt nicht angepasst, d.h. das Projekt heißt immer noch "HelloQtWorld".

Code: Alles auswählen

C:\MinGW\bin\mingw32-make.exe clean all 
C:/MinGW/bin/mingw32-make.exe -f Makefile.Release clean
mingw32-make.exe[1]: Entering directory `D:/Eigene Dateien/Konrad/Workspace/HelloQtWorld'
del release\moc_button.cpp release\moc_calculator.cpp
del qmake_image_collection.cpp
D:\Eigene Dateien\Konrad\Workspace\HelloQtWorld\qmake_image_collection.cpp konnte nicht gefunden werden
del release\button.o release\calculator.o release\main.o release\moc_button.o release\moc_calculator.o
mingw32-make.exe[1]: Leaving directory `D:/Eigene Dateien/Konrad/Workspace/HelloQtWorld'
C:/MinGW/bin/mingw32-make.exe -f Makefile.Debug clean
mingw32-make.exe[1]: Entering directory `D:/Eigene Dateien/Konrad/Workspace/HelloQtWorld'
del debug\moc_button.cpp debug\moc_calculator.cpp
del qmake_image_collection.cpp
D:\Eigene Dateien\Konrad\Workspace\HelloQtWorld\qmake_image_collection.cpp konnte nicht gefunden werden
del debug\button.o debug\calculator.o debug\main.o debug\moc_button.o debug\moc_calculator.o
mingw32-make.exe[1]: Leaving directory `D:/Eigene Dateien/Konrad/Workspace/HelloQtWorld'
C:/MinGW/bin/mingw32-make.exe -f Makefile.Release all
mingw32-make.exe[1]: Entering directory `D:/Eigene Dateien/Konrad/Workspace/HelloQtWorld'
g++ -c -O2 -O2 -frtti -fexceptions -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"C:/Qt/4.1.1/include/QtCore" -I"C:/Qt/4.1.1/include/QtGui" -I"C:/Qt/4.1.1/include" -I"." -I"C:/Qt/4.1.1/include/ActiveQt" -I"release" -I"." -I"C:/Qt/4.1.1/mkspecs/win32-g++" -o release\button.o button.cpp
g++ -c -O2 -O2 -frtti -fexceptions -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"C:/Qt/4.1.1/include/QtCore" -I"C:/Qt/4.1.1/include/QtGui" -I"C:/Qt/4.1.1/include" -I"." -I"C:/Qt/4.1.1/include/ActiveQt" -I"release" -I"." -I"C:/Qt/4.1.1/mkspecs/win32-g++" -o release\calculator.o calculator.cpp
g++ -c -O2 -O2 -frtti -fexceptions -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"C:/Qt/4.1.1/include/QtCore" -I"C:/Qt/4.1.1/include/QtGui" -I"C:/Qt/4.1.1/include" -I"." -I"C:/Qt/4.1.1/include/ActiveQt" -I"release" -I"." -I"C:/Qt/4.1.1/mkspecs/win32-g++" -o release\main.o main.cpp
C:\Qt\4.1.1\bin\moc.exe -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"C:/Qt/4.1.1/include/QtCore" -I"C:/Qt/4.1.1/include/QtGui" -I"C:/Qt/4.1.1/include" -I"." -I"C:/Qt/4.1.1/include/ActiveQt" -I"release" -I"." -I"C:/Qt/4.1.1/mkspecs/win32-g++" -D__GNUC__ -DWIN32 button.h -o release\moc_button.cpp
g++ -c -O2 -O2 -frtti -fexceptions -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"C:/Qt/4.1.1/include/QtCore" -I"C:/Qt/4.1.1/include/QtGui" -I"C:/Qt/4.1.1/include" -I"." -I"C:/Qt/4.1.1/include/ActiveQt" -I"release" -I"." -I"C:/Qt/4.1.1/mkspecs/win32-g++" -o release\moc_button.o release\moc_button.cpp
C:\Qt\4.1.1\bin\moc.exe -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"C:/Qt/4.1.1/include/QtCore" -I"C:/Qt/4.1.1/include/QtGui" -I"C:/Qt/4.1.1/include" -I"." -I"C:/Qt/4.1.1/include/ActiveQt" -I"release" -I"." -I"C:/Qt/4.1.1/mkspecs/win32-g++" -D__GNUC__ -DWIN32 calculator.h -o release\moc_calculator.cpp
g++ -c -O2 -O2 -frtti -fexceptions -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"C:/Qt/4.1.1/include/QtCore" -I"C:/Qt/4.1.1/include/QtGui" -I"C:/Qt/4.1.1/include" -I"." -I"C:/Qt/4.1.1/include/ActiveQt" -I"release" -I"." -I"C:/Qt/4.1.1/mkspecs/win32-g++" -o release\moc_calculator.o release\moc_calculator.cpp
g++ -mthreads -Wl,-enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-s -Wl,-s -Wl,-subsystem,windows -o "release\HelloQtWorld.exe" release\button.o release\calculator.o release\main.o release\moc_button.o release\moc_calculator.o  -L"C:\Qt\4.1.1\lib" -lmingw32 -lqtmain -lQtGui4 -lQtCore4
mingw32-make.exe[1]: Leaving directory `D:/Eigene Dateien/Konrad/Workspace/HelloQtWorld'
C:/MinGW/bin/mingw32-make.exe -f Makefile.Debug all
mingw32-make.exe[1]: Entering directory `D:/Eigene Dateien/Konrad/Workspace/HelloQtWorld'
g++ -c -g -g -frtti -fexceptions -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"C:/Qt/4.1.1/include/QtCore" -I"C:/Qt/4.1.1/include/QtGui" -I"C:/Qt/4.1.1/include" -I"." -I"C:/Qt/4.1.1/include/ActiveQt" -I"debug" -I"." -I"C:/Qt/4.1.1/mkspecs/win32-g++" -o debug\button.o button.cpp
g++ -c -g -g -frtti -fexceptions -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"C:/Qt/4.1.1/include/QtCore" -I"C:/Qt/4.1.1/include/QtGui" -I"C:/Qt/4.1.1/include" -I"." -I"C:/Qt/4.1.1/include/ActiveQt" -I"debug" -I"." -I"C:/Qt/4.1.1/mkspecs/win32-g++" -o debug\calculator.o calculator.cpp
g++ -c -g -g -frtti -fexceptions -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"C:/Qt/4.1.1/include/QtCore" -I"C:/Qt/4.1.1/include/QtGui" -I"C:/Qt/4.1.1/include" -I"." -I"C:/Qt/4.1.1/include/ActiveQt" -I"debug" -I"." -I"C:/Qt/4.1.1/mkspecs/win32-g++" -o debug\main.o main.cpp
C:\Qt\4.1.1\bin\moc.exe -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"C:/Qt/4.1.1/include/QtCore" -I"C:/Qt/4.1.1/include/QtGui" -I"C:/Qt/4.1.1/include" -I"." -I"C:/Qt/4.1.1/include/ActiveQt" -I"debug" -I"." -I"C:/Qt/4.1.1/mkspecs/win32-g++" -D__GNUC__ -DWIN32 button.h -o debug\moc_button.cpp
g++ -c -g -g -frtti -fexceptions -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"C:/Qt/4.1.1/include/QtCore" -I"C:/Qt/4.1.1/include/QtGui" -I"C:/Qt/4.1.1/include" -I"." -I"C:/Qt/4.1.1/include/ActiveQt" -I"debug" -I"." -I"C:/Qt/4.1.1/mkspecs/win32-g++" -o debug\moc_button.o debug\moc_button.cpp
C:\Qt\4.1.1\bin\moc.exe -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"C:/Qt/4.1.1/include/QtCore" -I"C:/Qt/4.1.1/include/QtGui" -I"C:/Qt/4.1.1/include" -I"." -I"C:/Qt/4.1.1/include/ActiveQt" -I"debug" -I"." -I"C:/Qt/4.1.1/mkspecs/win32-g++" -D__GNUC__ -DWIN32 calculator.h -o debug\moc_calculator.cpp
g++ -c -g -g -frtti -fexceptions -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"C:/Qt/4.1.1/include/QtCore" -I"C:/Qt/4.1.1/include/QtGui" -I"C:/Qt/4.1.1/include" -I"." -I"C:/Qt/4.1.1/include/ActiveQt" -I"debug" -I"." -I"C:/Qt/4.1.1/mkspecs/win32-g++" -o debug\moc_calculator.o debug\moc_calculator.cpp
g++ -mthreads -Wl,-enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-subsystem,windows -o "debug\HelloQtWorld.exe" debug\button.o debug\calculator.o debug\main.o debug\moc_button.o debug\moc_calculator.o  -L"C:\Qt\4.1.1\lib" -lmingw32 -lqtmaind -lQtGuid4 -lQtCored4
C:\MinGW\bin\..\lib\gcc\mingw32\3.4.2\..\..\..\..\mingw32\bin\ld.exe: cannot find -lqtmaind
collect2: ld returned 1 exit status
mingw32-make.exe[1]: *** [debug\HelloQtWorld.exe] Error 1
mingw32-make.exe[1]: Leaving directory `D:/Eigene Dateien/Konrad/Workspace/HelloQtWorld'
C:\MinGW\bin\mingw32-make.exe: *** [debug-all] Error 2
Es läuft aber!

Nach diesem WE kümmere ich mich mal drum (bin im Urlaub :)).

Ciao
Konrad

PS: Vielleicht qmake -project && qmake vergessen?

Verfasst: 9. März 2006 12:31
von kowi1134
Hallo!

Ich habe mal eine Email an Trolltech geschrieben und folgendes zurück bekommen:
Jan Erik Hanssen hat geschrieben:Hi Konrad,
Sorry for the late reply.
ich hat geschrieben: Hello!
I've spend many hours searching the WWW+Usenet looking for a
mysterious integration of the Qt tools (such as the Qt Designer) into
the Eclipse IDE.
Everybody says, that there's somebody currently working on this
problem.
But as nobody knew the name of this legendary person or project, I
figured out it would be best to ask YOU if you know more than me
according to this mysterious untertaking!

Please let me know if you plan to work on an Integration for the
Eclipse
We are currently investigating if this is something we want to do but we
obviously don't have anything to show yet, we don't even know if we
will ever have.
ich hat geschrieben:or if you know the person who is.
We've also heard about other people looking into this, like the
following page

http://kde-eclipse.pwsp.net/

Hope this helps.

--
Jan Erik Hanssen
Trolltech AS, Oslo - http://www.trolltech.com
Das finde ich super an Trolltech, die antworten immer sehr ausführlich!!!

Ciao
Konrad

Verfasst: 9. März 2006 20:17
von Querdenker
Hi Kowi,

also ich habe ja schon geschrieben, dass ich mein Gigant Projekt in Eclipse geschoben bekommen habe und auch damit Klasse arbeiten kann.
Aber:
Nach einer gewissen Zeit hängt sich das System grundlos auf. Ich habe festgestellt, dass ein Background-Task, namens Indexer, hier ewig herumwurstelt um die Klassenhierachien von Qt abzubilden.

Hast Du dafür ne Einstellung parat?

Verfasst: 25. März 2006 09:51
von kowi1134
Mittlerweile habe ich die Anleitung modifiziert und die Eclipse rennt wie Sau!

Das Wichtigste war, dass man der Eclipse sagt, sie möge bei einem Build

Code: Alles auswählen

make release
und nicht

Code: Alles auswählen

make all
und bei einem Rebuild

Code: Alles auswählen

make clean release
und nicht

Code: Alles auswählen

make clean all
ausführen.

Mehrere Dateien sind kein Problem mehr! Der MOC arbeitet einwandfrei!

Man braucht wirklich nur den Pfad zu "C:\Qt-4.1.1\include" als externen Include-Pfad hinzufügen. Den Rest macht die Eclipse von alleine.

Wichtig bei einer der letzten Modifikationen der Anleitung war, dass nach einem

Code: Alles auswählen

qmake -project
und einem

Code: Alles auswählen

qmake
die Ansicht aktualisiert wird. So sieht man im Navigationspanel auch die erzeugten Dateien und Ordner.

Ein Rebuild bei jedem Neukompilieren ist somit auch nicht mehr nötig.

Jetzt macht programmieren unter Windows Spass!

Ciao
Konrad

PS: Vielen Dank, dass so viele Forumbesucher sich für meine Anleitung interessiert haben und so eifrig testen! Ihr seid die Besten!