Erster Versuch Autoconnect eines Designer-Dialogs

Alles rund um die Programmierung mit Qt
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

nee ich meinte von Qt
CptGreenwood
Beiträge: 18
Registriert: 22. November 2005 10:58

Beitrag von CptGreenwood »

jo, Qt v. 4.0.1
Frisch runtergeladen für MingW/GCC
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

kannste deine Dateien mal hier anhängen?
CptGreenwood
Beiträge: 18
Registriert: 22. November 2005 10:58

Beitrag von CptGreenwood »

Gerne...
(danke übrigens für deine Geduld...)
Dateianhänge
dateien.zip
(1.55 KiB) 166-mal heruntergeladen
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

so jetzte gehts. es lag wie vermut am moc. Nebenbei habe ich es etwas aufgeräumt!!
CptGreenwood
Beiträge: 18
Registriert: 22. November 2005 10:58

Beitrag von CptGreenwood »

Ich verneige mich... es geht tatsächlich!
Um den Lerneffekt mitzunehmen:

Was ist ein "moc"?

Was hast du geändert, dass es jetzt klappt? (Vielleicht etwas ausführlicher, für Dummies :lol: )

Warum erzeugt "qmake" nicht meine "ui_imagedialog.h"? Ich muss sie immer händisch mit "uic" erzeugen? Es ist doch eine FORMS-Zeile in der Projektdatei, müsste das nicht automatisch gehen?
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

moc ist das tools was die Slots, Signale und Macros auflöst.
eigeentlich sollte uic über das makefile aufgerufen werden. Was auch passiert.
CptGreenwood
Beiträge: 18
Registriert: 22. November 2005 10:58

Beitrag von CptGreenwood »

Bei mir nicht.
Muß ich "qmake" oder "make" mit irgendwelchen Parametern aufrufen? Ich habe es ohne Parameter getan.

Wo kommt der "moc" ins Spiel, d.h. an welcher Stelle wird er aufgerufen?

Was bedeuten deine Änderungen an der "project.pro"? Das Aufteilen des Codes auf eine zusätzliche .cpp und .h kann doch nicht der Grund gewesen sein, warum es plötzlich funktioniert, oder?

...ich muss das in den Kopf bekommen um beim nächsten Prog-Projekt nicht wieder vor den gleichen Problemen zu stehen...
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

Das aufteilen mache es für qmake leichter. Und es die Übersichtlicher.
Auserdem sollten du andren Nabem wähnle. für deine UI dateine. z.b KlassennameBasis oder so.
erst qmake laufen lassen, das erstellt das die makte Datei.
Wo drinn steht, was wie wan aufzufrufen ist.
Zuerst läuft denn uic dann wird übersetzte dann kommst moc ran
und zum Schluss wird alles vom linker zusammen gebaut.
CptGreenwood
Beiträge: 18
Registriert: 22. November 2005 10:58

Beitrag von CptGreenwood »

OK, jetzt ist mir klar, was wo passiert.

Nur das wichtigste fehlt mir noch:
Was war bei meinen misslungenen Build-Versuchen anders, als bei dem mit deinen Codefiles? Ich habe mir die Dateien, bzw. deren Unterschiede zu meiner Version mal angeschaut aber nichts gefunden, was eine Erklärung liefern könnte...

Und: Wenn ich bei mir "qmake" eingebe, wird "ui_imagedialog.h" nicht erstellt. Brauchts vielleicht doch einen Parameter? Woher weiß "qmake", welches Projektfile es nehmen soll?
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

nee erst bei make wird diese datei erstellt.
Ich habe nur eine andre Schreinweise für deinen Code benutzt.
CptGreenwood
Beiträge: 18
Registriert: 22. November 2005 10:58

Beitrag von CptGreenwood »

Erst bei "make" !?
Wenn ich die Headerdatei vorher nicht mit uic erstellen lasse, gibts bei "make" Mecker, dass die Datei nicht gefunden wird.

Wenn du tatsächlich den Code nur anders aufgeteilt hast aber keine funktionalen Änderungen gemacht hast, sollte der Unterschied zwischen nicht-funktionieren und funktionieren wirklich NUR daran liegen, dass der aufgeteilt Code "schöner" oder "übersichtlicher" ist??
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

beim aufruf von make wird zu erst die .h datei durch uic erzeugt!!
CptGreenwood
Beiträge: 18
Registriert: 22. November 2005 10:58

Beitrag von CptGreenwood »

Na dann nochmal Schritt für Schritt:

So sieht es aus, bevir ich irgendwas gemacht habe:

Code: Alles auswählen

C:\Temp\qt4>dir
 Datenträger in Laufwerk C: ist System  WINXP
 Volumeseriennummer: 4486-06FD

 Verzeichnis von C:\Temp\qt4

25.11.2005  15:16    <DIR>          .
25.11.2005  15:16    <DIR>          ..
25.11.2005  13:45               116 Imagedialog.cpp
25.11.2005  13:44               242 Imagedialog.h
24.11.2005  13:32             4.926 imagedialog.ui
25.11.2005  13:46               213 main.cpp
25.11.2005  13:48               148 project.pro
               5 Datei(en)          5.645 Bytes
               2 Verzeichnis(se), 23.943.622.656 Bytes frei

C:\Temp\qt4>
Jetzt rufe ich "qmake" auf:

Code: Alles auswählen

C:\Temp\qt4>qmake

C:\Temp\qt4>
Jetzt sieht es im Verzeichnis so aus:

Code: Alles auswählen

C:\Temp\qt4>dir
 Datenträger in Laufwerk C: ist System  WINXP
 Volumeseriennummer: 4486-06FD

 Verzeichnis von C:\Temp\qt4

25.11.2005  15:18    <DIR>          .
25.11.2005  15:18    <DIR>          ..
25.11.2005  15:18    <DIR>          debug
25.11.2005  13:45               116 Imagedialog.cpp
25.11.2005  13:44               242 Imagedialog.h
24.11.2005  13:32             4.926 imagedialog.ui
25.11.2005  13:46               213 main.cpp
25.11.2005  15:18             5.128 Makefile
25.11.2005  15:18             5.281 Makefile.Debug
25.11.2005  15:18             5.365 Makefile.Release
25.11.2005  13:48               148 project.pro
25.11.2005  15:18    <DIR>          release
               8 Datei(en)         21.419 Bytes
               4 Verzeichnis(se), 23.943.626.752 Bytes frei

C:\Temp\qt4>
Jetzt rufe ich "make" auf:

Code: Alles auswählen

C:\Temp\qt4>c:\programme\codeblocks\bin\make
c:/programme/codeblocks/bin/make -f Makefile.Release
make[1]: Entering directory `C:/Temp/qt4'
C:\Programme\Qt\bin\uic.exe imagedialog.ui -o ui_imagedialog.h
process_begin: CreateProcess((null), C:ProgrammeQtbinuic.exe imagedialog.ui -o u
i_imagedialog.h, ...) failed.
make (e=2): Das System kann die angegebene Datei nicht finden.
make[1]: *** [ui_imagedialog.h] Error 2
make[1]: Leaving directory `C:/Temp/qt4'
c:\programme\codeblocks\bin\make: *** [release] Error 2

C:\Temp\qt4>
Wie ich sagte... er meckert, dass "ui_imagedialog.h" nicht gefunden wird.
(Wo bestimme ich eigentlich, wie das Headerfile heißen soll? Das steht ha auch in der Projektdatei nicht drin.)
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

du nimmst das falsche make. du must das von mingw benutzten und nicht von codeblocks. Denn er kann den uic nicht richtig aufrufen.
Antworten