• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] QT4 und KDevelop 3.3 unter KDE 3.5

Hallo,

ist es irgendwie möglich, QT4 in KDevelop 3.3 (alles unter KDE 3.5 mit SuSE 9.2) zu verwenden?
Ich habe QT4 (GPL-Version) von Trolltech heruntergeladen und compiliert, das hat auch wunderbar geklappt. Die Demos ließen sich ausfühen - allerdings haben sie alle ein wenig träge reagiert (Ich habe 756MB RAM und einen AMD Athlon 2200+). Nach dem Eintrag des bin-Ordners als PATH (in der .profile im Home-Verzeichnis) und einem Neustart hat er auch z.B. für qmake nicht mehr qt3, sondern qt4 verwendet.
Da KDevelop sich aber weigert, installiert zu werden, wenn ich nicht die QT3-Dev-Pakete drauf habe, habe ich die auch installiert gelassen. In KDevelop habe ich dann 2 Vorlagen für QT-Pogramme ("Anwendung" und "Hallo Welt"), das scheint zu stimmen (war in irgendeinem Screenshot auch so). Also habe ich zum Test mal die "Anwendung" genommen und compilieren lassen - Fehlermeldungen ohne Ende. Allerdings verwendet er irgendwie eine Mischung aus QT3 und QT4 (sfsfa ist der Name des Projekts^^):
Code:
cd '/home/user/Desktop/sfsfa' && QTDIR="/usr/lib/qt3" gmake -j1 
cd src && gmake 
g++ -c -pipe -O2 -D_REENTRANT -Wall -W -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Trolltech/Qt-4.1.0/mkspecs/linux-g++ -I. -I/usr/local/Trolltech/Qt-4.1.0/include/QtCore -I/usr/local/Trolltech/Qt-4.1.0/include/QtGui -I/usr/local/Trolltech/Qt-4.1.0/include -I. -I. -o sfsfa.o sfsfa.cpp
sfsfa.cpp:28:24: qpopupmenu.h: Datei oder Verzeichnis nicht gefunden
sfsfa.cpp:37:20: qaccel.h: Datei oder Verzeichnis nicht gefunden
...
sfsfa.cpp:267: error: `accept' undeclared (first use this function)
sfsfa.cpp:285: error: `ignore' undeclared (first use this function)
gmake[1]: *** [sfsfa.o] Fehler 1
gmake: *** [sub-src-make_default] Fehler 2
*** Beendet mit Status: 2 ***
Dann habe ich in den Projekteinstellungen einen Reiter für die QT-Einstellungen gefunden und dort QT4 und den Pfad (/usr/local/Trolltech/Qt-4.1.0/) eingestellt (der Haken "QT verwenden" war vorher seltsamerweise deaktiviert). Das Compilieren hat aber immer noch nicht geklappt - mit denselben Fehlermeldungen. Daran hat sich auch nach dem Ändern der Einstellungen auf QT3 und /usr/lib/qt3 nichts geändert - er hat die ganze Sache einfach ignoriert.
Also habe ich KDevelop und QT3-dev wieder runtergschmissen und versucht, es mir selber zu compilieren (nach einer Anleitung auf http://www.kdevelop.org/index.html?filename=3.3/branches_compiling.html&set_lang=en unten) - statt des QT3-Pfades habe ich (bei den Definitionen vor dem ./config) den QT4-Pfad verwendet, aber dann spuckt ./config eine Fehlermeldung aus, es könne QT >= 3.2.0 und < 4 nicht finden. Der QT3-Pfad (ohne dev-Pakete) klappt auch nicht - wenn ich die QT3-Dev Pakete installiert haben muss kann ich KDevelop ja auch gleich via apt einspielen.
Kann ich KDevelop irgendwie mitteilen, dass er zum Compilieren ausschließlich und immer QT4 verwenden soll und er das QT3, selbst wenn es installiert ist, ignorieren soll?

Grüße und schonmal danke für die Hilfe :)
windows-zerstoerer
 

TeXpert

Guru
Windows-Zerstoerer schrieb:
Fehlermeldung aus, es könne QT >= 3.2.0 und < 4 nicht finden.

ich hab die Verbindugn Qt4 ~ Kdevelop noch nicth betrachtet, aber die Fehlermeldung scheint, dass Kdev mit Qt4 nichts (noch nichts) anzufangen weiß....), ein <4 ist recht eindeutig ;)
 
Ja das habe ich mir auch gedacht - aber KDevelop 3.3.x unterstützt QT4.
1.) Ist QT4 als Auswahl angeboten im Konfigurationsmenü von C++-Projekten - nur funktioniert es nicht
2.) Steht auf der KDevelop-Homepage:
Auf http://www.kdevelop.org/ oben

KDevelop 3.3 alpha 1 (aka 3.2.90) got released to the public together with KDE 3.5 alpha 1. You can download it and see its Changelog. KDevelop 3.3 runs on KDE >= 3.2 and QT >= 3.2 but can be used to develop both QT3 and QT4 appplications.


Wahrscheinlich braucht er QT3 zum Compilieren (weil er mit QT3 entwickelt wurde), kann aber auch QT4-Projekte compilieren - die Frage ist nur, wie?
 

TeXpert

Guru
was mich bei Deiner Fehlermeldung stört ist:
QTDIR="/usr/lib/qt3"
sieh mal zu, dass das behoben wird. (vor dem Start in einer Shell mal überschreiben)

denn dadurch dürften die uic und moc evtl. die alten includes nutzen
 
was ist eigentlich moc...?

Diese Sachen gebe ich nicht selbst ein, das macht KDevelop wenn ich auf "Programm erstellen" klicke - wie soll ich das dann überschreiben?
 

taki

Advanced Hacker
Setze die Umgebungsvariable QTDIR auf gar keinen Fall vor dem Start von KDevelop auf Qt4! Das kann nicht gut gehen. Die Umgebungsvariable muss in den Projekt-Einstellungen gesetzt werden, da sie ja nur für den Bauprozess und das Starten des erstellten Programms benötigt wird.
 
TeXpert schrieb:
das ist eine Umgebungsvariable, setze sie ich wiederhole mich, lies etwas über QT:
Ich habe (wenn auch nicht viel) über Qt gelsen. Vielleicht kannst du mir ein gutes Toutorial empfehlen, ich verwende das aus der c't und das erklärt zur Installation und zum Hintergruznd recht wenig, es erklärt nur, wie man mit einem funktionierenden Qt programmiert.
Ich wusste nicht, dass es derart kompliziert ist das Teil zum Laufen zu bewegen.
Mir ist schon klar dass es sich bei QTDIR um eine Umgebungsvariable handelt, nur was ich mit der machen sollte nicht.
Ich habe in den Projekteinstellungen gesucht und dort eine Kategorie gefunden, in der ich Umgebungsvariablen setzen kann die angeblich vor dem Compilieren gesetzt werden. Dort habe ich dann QTIR als den Pfad auf QT4 definiert - allerdings kann ich davon beim Compilieren nichts sehen und es ändert nichts am Ergebnis (wie ich später gesehen habe setzt er diese Umgebungsvariablen vor dem Ausführen des Progrsmms, nicht vor dem Compilieren...)

Ich hatte noch die Vermutung, dass der Quelltext vielleicht QT3-spezifisch ist und er wirklich QT4 verwendet und daher nicht damit zurrechtkommt. Also habe ich alle Zusatzdateien entfernt und den Quelltext der main.cpp mit dem Quelltext aus dem ersten Beispiel des Toutorials eingefügt. Außerdem habe ich, um auszuschließen, dass er QT3 verwendet, die qmake-Datei und den include-Ornder von qt3 umbenannt, sodass es "nicht gefunden"-Fehlermeldungen hageln müsste falls er QT3 verwendet. Die gab es aber nicht, das Programm wurde korrekt compiliert. Der Gegentest (QT4-Dateien umbenennen) hegelte sofort entsprechende Fehlermeldungen.
KDevelop scheint also tatsächlich QT4 zu verwenden, obwohl es nirgendwo eingestellt ist und obowhl u.a. gegenteilige Pfade angegeben werden - seltsam.

Vielen Dank für die investierte Zeit :)
Falls ich nochmal nicht weiterkomme, melde ich mich.
 

TeXpert

Guru
Windows-Zerstoerer schrieb:
Vielleicht kannst du mir ein gutes Toutorial empfehlen

das Denken soll Dir keiner abnehmen?

1. google
2. Hersteller http://doc.trolltech.com/3.3/how-to-learn-qt.html (oder analog für die anderen Versionen)
3. das Forum sollte man auch mal lesen... http://www.linux-club.de/viewtopic.php?t=26272 -> Qt-Buch (ist zwar 3 aber passt auch noch etwas)
 
TeXpert schrieb:
das Denken soll Dir keiner abnehmen?
nein. Das war eine Bitte, weil du wahrscheinlich (da du ja Ahnung von dem Thema hast) die guten Toutorials aus den vielen, die es gibt, in 30sek zusammenhast, wofür ich (als Neuling bei Qt) eher 30min brauchen würde.

TeXpert schrieb:
1. google
2. Hersteller http://doc.trolltech.com/3.3/how-to-learn-qt.html (oder analog für die anderen Versionen)
3. das Forum sollte man auch mal lesen... http://www.linux-club.de/viewtopic.php?t=26272 -> Qt-Buch (ist zwar 3 aber passt auch noch etwas)
danke :)
 

TeXpert

Guru
borgg schrieb:
TeXpert schrieb:
Windows-Zerstoerer schrieb:
was ist eigentlich moc...?
lies erst mal was über Qt bevor Du damit arbeitest.
Ich dachte Qt4 braucht kein moc mehr!? Ich dachte ich hätte irgendwas in der Art gelesen. Wenn dem so ist, dann musser sich damit auch nicht befassen, sofern er gleich bei Qt4 einsteigen will oder? ;)

wo willst Du das gelesen haben? solange Du Qt4 mit Signals und Slots betreiben willst braucht Du moc...
 

borgg

Newbie
TeXpert schrieb:
borgg schrieb:
TeXpert schrieb:
lies erst mal was über Qt bevor Du damit arbeitest.
Ich dachte Qt4 braucht kein moc mehr!? Ich dachte ich hätte irgendwas in der Art gelesen. Wenn dem so ist, dann musser sich damit auch nicht befassen, sofern er gleich bei Qt4 einsteigen will oder? ;)
wo willst Du das gelesen haben? solange Du Qt4 mit Signals und Slots betreiben willst braucht Du moc...


http://www.heise.de/newsticker/meldung/67604 schrieb:
Wer nicht den Qt-eigenen Signal/Slot-Mechanismus zur Ereignisverarbeitung verwenden möchte, sondern lieber die syntaktisch verwandte und ebenfalls plattformunabhängige C++-Bibliothek Boost.Signals, verheddert sich nicht mehr im Gestrüpp konkurrierender Präprozessor-Makros: Statt signals und slots stehen dem Programmierer nun auch die Makros Q_SIGNALS und Q_SLOTS zu Gebote.
Ich hatte das so aufgefasst, dass diese Makros dann ohne moc auskommen.[/quote]
 

TeXpert

Guru
borgg schrieb:
Ich hatte das so aufgefasst, dass diese Makros dann ohne moc auskommen.
wäre möglich, muss ich mir bei gelegenheit mal ansehen, aber dann musst Du noch zusätzliche libs mit deployen und das ist auch nicht immer schön... wer boost sonst nicht nutzt will das u.u. nicht. Wer weiterhin rein Qt programmieren will, kommt um den moc wohl nicht rum
 

borgg

Newbie
Jo hatte das nur im Überfliegen damals erhascht. Das mit den zusätzlichen Libs war mir in dem Moment nicht so bewußt. Da ist reines Qt immernoch besser. Und so schlimm ist das mit moc und den "normalen" slots ja eigentlich nicht ;).
 

TeXpert

Guru
eher im Gegenteil, ich finde das Konzept total geil :) wenn ich mir demgegenüber das Macro-gehampel bei MS und der MFC ansehe...
 
Oben