Qt in C++ Projekt einbinden
Qt in C++ Projekt einbinden
Guten Tag!
Ich hoffe ihr könnt mir helfen, da bis jetzt keine Dokumentation bei Google mir helfen konnte.
Und zwar geht es wie im Titel beschrieben darum, dass ich Qt in ein bestehendes C++ Projekt einbinden will. Rahmenbedingung: Unter Eclipse und Ubuntu.
Dafür erstelle ich wie gewohnt ein normales C++ Projekt..dann erstelle ich eine Qt Gui Class. Nach diversen Internetforen müsste ich jetzt über die Konsole folgende Befehle ausführen:
qmake -project
qmake
make
Dies geht auch alles ohne weitere Schwierigkeiten. Danach treten jetzt doch diverse Fehler in der Headerdatei von der Gui, der ui_-Datei von der Gui und komischerweise wird auch eine Datei mit dem Präfix moc_ erstellt.
Ab hier weiß ich leider nicht mehr weiter, vielleicht könnt ihr mir ja helfen oder habt das ganze schonnmal gemacht?
Achja, die ganzen QT-Bibliotheken habe ich natürlich vorher schon in die Includes gepackt.
Grüße,
Etuel
Ich hoffe ihr könnt mir helfen, da bis jetzt keine Dokumentation bei Google mir helfen konnte.
Und zwar geht es wie im Titel beschrieben darum, dass ich Qt in ein bestehendes C++ Projekt einbinden will. Rahmenbedingung: Unter Eclipse und Ubuntu.
Dafür erstelle ich wie gewohnt ein normales C++ Projekt..dann erstelle ich eine Qt Gui Class. Nach diversen Internetforen müsste ich jetzt über die Konsole folgende Befehle ausführen:
qmake -project
qmake
make
Dies geht auch alles ohne weitere Schwierigkeiten. Danach treten jetzt doch diverse Fehler in der Headerdatei von der Gui, der ui_-Datei von der Gui und komischerweise wird auch eine Datei mit dem Präfix moc_ erstellt.
Ab hier weiß ich leider nicht mehr weiter, vielleicht könnt ihr mir ja helfen oder habt das ganze schonnmal gemacht?
Achja, die ganzen QT-Bibliotheken habe ich natürlich vorher schon in die Includes gepackt.
Grüße,
Etuel
Prinzipiell gibt es beim Kompilieren nicht den einen Fehler, das weißt du. Deshalb solltest du deinen spezifischen Fehler, den du bekommst, hier posten.
Ansonsten gibt es ein Qt-Plugin für Eclipse, was aber gar keinen guten Ruf hat... Warum ist Eclipse Pflicht? Kann es nicht der QtCreator sein? Der ist extrem gut! (nicht nur für Qt).
Und wenn du jetzt dann eh gleich am Fehler posten bist, kannst du die relevanten Code-Stellen auch noch mit angeben, dann kann man gleich ganz spezifische Lösungswege aufzeigen
Ansonsten gibt es ein Qt-Plugin für Eclipse, was aber gar keinen guten Ruf hat... Warum ist Eclipse Pflicht? Kann es nicht der QtCreator sein? Der ist extrem gut! (nicht nur für Qt).
Und wenn du jetzt dann eh gleich am Fehler posten bist, kannst du die relevanten Code-Stellen auch noch mit angeben, dann kann man gleich ganz spezifische Lösungswege aufzeigen
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Leider muss es QT unter Eclipse sein, weil wir von der Uni aus für ein bestehndes C++ Projekt mit QT eine Gui erstellen sollen.
Der erste Fehler ist wie gesagt in der moc_ Datei:
Danach folgen eigentlich nur mehrere ähnliche Fehler wie:
Wie gesagt, es sind so viele Fehler, dass mir bei meinem Weg Qt in C++ einzubinden schon das Gefühl kommt, einen Fehler zu machen.
Der erste Fehler ist wie gesagt in der moc_ Datei:
Code: Alles auswählen
/home/ubuntu/workspace/maker2/Debug/../moc_trans.cpp:59: undefined reference to `QWidget::qt_metacast(char const*)'Code: Alles auswählen
./moc_trans.o:(.rodata+0x0): undefined reference to `QWidget::staticMetaObject'-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
QWidget ist in der QtGui Library. Wurde zum kompilieren wirklich das per qmake erzeugte Makefile benutzt?
Hier steht wie qmake zu benutzen ist: http://doc.trolltech.com/4.7/qmake-tutorial.html
Hier steht wie qmake zu benutzen ist: http://doc.trolltech.com/4.7/qmake-tutorial.html
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
Nein, leider bringt mir das auch nichts, wenn ich qmake mit dem richtigen makefile ausführe.
Vielleicht hilft es ja, wenn ich meinen Ablauf nochmal genau schildere:
Zuerst lege ich mein C++-Projekt an, füge danach eine Qt Gui Class ein. Diese erstellt eine bei mir "trans.h", "trans.cpp" und eine "trans.ui".
Danach erstelle ich über
meine projektname.pro.
Diese hat den Inhalt
Danach erstell ich mit
die Makefile.
Danach geh ich dann hin und führe den Make Befehl auf, worauf hin mehrere Dateien erstellt werden:
moc_trans.cpp, ui_trans.h, main.p, moc_trans.p, trans.o
Wenn ich dann das Projekt ganz normal builden will kommen die oben erwähnten Fehler.
Vielleicht hilft es ja, wenn ich meinen Ablauf nochmal genau schildere:
Zuerst lege ich mein C++-Projekt an, füge danach eine Qt Gui Class ein. Diese erstellt eine bei mir "trans.h", "trans.cpp" und eine "trans.ui".
Danach erstelle ich über
Code: Alles auswählen
qmake -projectDiese hat den Inhalt
Code: Alles auswählen
TEMPLATE = app
TARGET =
DEPENDPATH += .
INCLUDEPATH += .
# Input
HEADERS += trans.h
FORMS += trans.ui
SOURCES += main.cpp trans.cppCode: Alles auswählen
qmake -o Makefile projektname.pro
Danach geh ich dann hin und führe den Make Befehl auf, worauf hin mehrere Dateien erstellt werden:
moc_trans.cpp, ui_trans.h, main.p, moc_trans.p, trans.o
Wenn ich dann das Projekt ganz normal builden will kommen die oben erwähnten Fehler.
Mhm okay, nachdem ich jetzt in meine trans.h noch folgendes eingefügt habe:
Hat sich das ganze darauf reduziert das mein trans.h an folgender Stelle
diesen Fehlercode ausspuckt:
Code: Alles auswählen
#include <QObject>
#include "ui_trans.h"Code: Alles auswählen
private:
Ui::transClass ui;Bei Interesse kann ich auch gerne noch den Inhalt der ui_trans.h posten, aber da ist der namespace Ui auf jeden Fall deklariert.../trans.h:16: error: ‘Ui’ has not been declared
../trans.h:16: error: ISO C++ forbids declaration of ‘transClass’ with no type
../trans.h:16: error: expected ‘;’ before ‘ui’
make: *** [moc_trans.o] Fehler 1
Hab mal die Dateien hier hochgeladen, danke schonmal soweit für eure Hilfe!
- Dateianhänge
-
- Dateien.zip
- Die angeforderten Daten.
- (2.1 KiB) 51-mal heruntergeladen
guuuut. Das baut und ist auch gut so.
Wenn du den Qt-Dreisatz (qmake --project && qmake && make) in der Konsole im Projektordner macht, geht das dann?
Zur Info: Der "Qt-Dreisatz" (qmake --project sollte NUR EINMAL wenn überhaupt ganz am Anfang für ein initialies .pro verwendet werden!!!!!) baut beim "make" schon alles fertig, das make generiert nicht nur die ui_trans.h und das moc. Du hast dann wirklich schon ein fertiges Binary! Schau mal mit "ls" nach.
Wenn du den Qt-Dreisatz (qmake --project && qmake && make) in der Konsole im Projektordner macht, geht das dann?
heißt das übder den "build"-Knopf in eclipse? Verwendet Eclpise überhaupt Makefiles? Baut Eclipse im falschen BuildDir? Liegt das ui_trans.h in einem anderen Dir?Wenn ich dann das Projekt ganz normal builden will kommen die oben erwähnten Fehler.
Zur Info: Der "Qt-Dreisatz" (qmake --project sollte NUR EINMAL wenn überhaupt ganz am Anfang für ein initialies .pro verwendet werden!!!!!) baut beim "make" schon alles fertig, das make generiert nicht nur die ui_trans.h und das moc. Du hast dann wirklich schon ein fertiges Binary! Schau mal mit "ls" nach.
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten: