Seite 1 von 1
[gelöst] [Qt4] Vererbung
Verfasst: 23. Juni 2005 15:18
von macman
Hallo,
ich steh mal wieder auf dem Schlauch. Versuche ein Projekt nach Qt4 zu konvertieren und kapier eins nicht.
Wenn man in Qt3 mit dem Designer einen Dialog erstellt hat, bekam man folgendes:
QDialog->MyDialog->MyDialogImpl
MyDialog wird jedesmal von UIC neu geschrieben, man selbst programmiert in MyDialogImpl.
In Qt4 siehst es so aus, wenn ich das richtig verstanden habe:
QDialog->ui_MyDialog->MyDialog->MyDialogImpl
ui_MyDialog und MyDialog stehen in einer Datei, geschrieben von UIC. Arbeiten tue ich mit MyDialogImpl, aber jetzt bekomme ich Fehlermeldungen wie:
accept' : nichtdeklarierter Bezeichner
'exec' : Ist kein Element von 'MyDialogImpl'
usw.
Der this-Zeiger funktioniert auch nicht, eben so als wenn MyDialogImpl nicht von QDialog abgeleitet wäre. Was ist da falsch? Man helfe mir auf die Sprünge

Verfasst: 23. Juni 2005 16:16
von lepsai
Sourcen bitte auf die Buhne.....
Verfasst: 23. Juni 2005 18:27
von FlorianBecker
Benutze das Portierungstools für den qt3wrap und dann beginne zu portieren.
Verfasst: 24. Juni 2005 07:54
von macman
lepsai hat geschrieben:Sourcen bitte auf die Buhne.....
Das habe ich befürchtet, ist aber nicht mehr nötig

In der qt-preview-Liste kam der entsprechende Hinweis. Mehrfachvererbung ist das Stichwort.
Vorher reichte ein:
class myDialogImpl : public myDialog {...}
Jetzt muß es heißen:
class myDialogImpl : public myDialog, public QDialog {...}
Warum das nicht mehr von UIC erschlagen wird, weiß ich nicht, und warum ich das in der Doku überlesen habe, kann ich auch nicht sagen. Es steht bestimmt drin, gefunden habe ich es aber noch nicht

Verfasst: 24. Juni 2005 08:05
von macman
FlorianBecker hat geschrieben:Benutze das Portierungstools für den qt3wrap und dann beginne zu portieren.
Also bitte. Bin natürlich nach den Schritten in der Doku vorgegangen, obwohl es da sehr einfach zu sein scheint, was es aber nicht ist. Es ist sehr viel Handarbeit nötig, sehr viel

Allein was beim portieren der ui-Dateien verloren geht... Zeichensätze passen nicht mehr, Bilder sind weg, Signal/Slots sind weg, Layouts passen nicht mehr, Größenangaben einzelner Widgets sind weg, und und und. Ich habe den Trolls einige Beispiele geschickt und einige Fehler sind behoben, aber eben nicht alle.
Dann gibt es so ein paar Sachen die auch kommentarlos verschwunden sind. Was ist mit QToolTipGroup? Da findet sich nichts mehr von in der Doku.
Qt4 ist bestimmt sehr gut um neue Projekte anzufangen. Das portieren von Qt3 nach 4 ist aber wie Pickel am A.... und keine Hand zum kratzen

Verfasst: 24. Juni 2005 08:28
von FlorianBecker
Entschuldige, kann ich ja nicht wissen, dass du bereits der Qt4 porting König bist
Wir haben die Ui Dateien per Hand geändert, aber nicht mit dem Designer sondern in einem normalen Editor, dann mit dem neuen Designer weiter bearbeitet.
Sicherlich ist viel Handarbeit nötig, so sagt es TT, so steht es in der Doku. Und so war es von Qt 2 auf Qt 3 schon.
Verfasst: 24. Juni 2005 08:51
von macman
FlorianBecker hat geschrieben:Entschuldige, kann ich ja nicht wissen, dass du bereits der Qt4 porting König bist

[huldvolle Geste machend]Es sei Dir verziehen
FlorianBecker hat geschrieben:Wir haben die Ui Dateien per Hand geändert, aber nicht mit dem Designer sondern in einem normalen Editor, dann mit dem neuen Designer weiter bearbeitet.
Ich hätte schon erwartet das der neue Designer besser mit den alten Dateien umgehen kann. Man stelle sich sowas bei einem Officeprogramm vor
FlorianBecker hat geschrieben:Sicherlich ist viel Handarbeit nötig, so sagt es TT, so steht es in der Doku. Und so war es von Qt 2 auf Qt 3 schon.
So früh war ich nicht dabei, arbeite erst seit der 3.0.0 mit Qt.
Verfasst: 24. Juni 2005 09:27
von FlorianBecker
Ja, wir hätten uns gewünscht, das das porting Tool direkt auf Qt4 fertig portet, denn das unterliegt ja einem nachvollziehbaren Ablauf. Aber er mappt nur auf den Qt3 Wrap in Qt4. Aber der Support von Qt3 in Qt4 ist von uns ja nicht mal gewünscht. Wir wollen ja dann schon richtig Qt4 nutzen. Zumal Sie sich ja dazu durchgerungen haben auch noch fehlende Klassen wie Workspace usw. einzubauen, die Sie ja erst für 4.1 geplant hatten. Aber solange will ja auch keiner warten. Denn 4.1 dauert mindestens noch ein Jahr, wenns mal reicht.
Verfasst: 24. Juni 2005 10:12
von macman
FlorianBecker hat geschrieben:Ja, wir hätten uns gewünscht, das das porting Tool direkt auf Qt4 fertig portet, denn das unterliegt ja einem nachvollziehbaren Ablauf. Aber er mappt nur auf den Qt3 Wrap in Qt4.
Ja, aber ich konnte vorher .xpm-Dateien für Buttons angeben und ich kann es inzwischen auch wieder. Warum gehen die Informationen dann verloren? Nur mal als Beispiel.
FlorianBecker hat geschrieben:Wir wollen ja dann schon richtig Qt4 nutzen. Zumal Sie sich ja dazu durchgerungen haben auch noch fehlende Klassen wie Workspace usw. einzubauen, die Sie ja erst für 4.1 geplant hatten. Aber solange will ja auch keiner warten.
Richtig. Ich werde erstmal zusehen das mein Projekt kompiliert und läuft und dann werde ich nach und nach Qt3 Altlasten ersetzen. Ich habe auch erstmal mit einem relativ kleinen angefangen, bevor ich mich an die großen Sachen heran mache, die zur Zeit sowieso noch in der Entwicklung sind.
FlorianBecker hat geschrieben:Denn 4.1 dauert mindestens noch ein Jahr, wenns mal reicht.
Qt3 verschwindet ja nicht wenn Qt4 released wird. Neue Projekte werden sofort mit Qt4 begonnen, aber bis die alten komplett von 3 nach 4 portiert sind, wird mehr als ein Jahr vergehen

Verfasst: 24. Juni 2005 10:15
von FlorianBecker
Richtig, zumal wir momentan 150.000 zeilen qt3 code auf qt4 bringen müssen. Das wird ein Spaß! Nur gut, das wir für die meisten Libs, STL benutzen.
Verfasst: 24. Juni 2005 10:38
von lepsai
[quote]zumal wir momentan 150.000 zeilen qt3 code [/quote]
Alter Schwede, da habt ihr was geleistet...

Verfasst: 24. Juni 2005 10:46
von FlorianBecker
Ja, was eben so dabei herauskommt, wenn eine handvoll Leute tag täglich programmieren. Das sind die wirklich gezählten Linien übrigens, genau 147583 Stand gestern Nacht. UI's sind da noch nicht dabei.
Verfasst: 24. Juni 2005 10:54
von macman
FlorianBecker hat geschrieben:Richtig, zumal wir momentan 150.000 zeilen qt3 code auf qt4 bringen müssen. Das wird ein Spaß! Nur gut, das wir für die meisten Libs, STL benutzen.
Ich komm gerade mal auf niedrige 5stellige Werte, programmier aber auch alleine

Dafür höre ich immer die anderen weinen und jammern, weil sie sich noch mit MFC herumschlagen müssen.
Zum Thema zurück, der Compiler läuft jetzt durch, dafür meckert der Linker (nur ein Beispiel von vielen):
error LNK2001: Nichtaufgeloestes externes Symbol "public: virtual int __thiscall myDialog::qt_metacall(enum QMetaObject::Call,int,void * *)"
In welcher Lib finde ich das denn? QMetaObject gehört zu QtCore, was natürlich eingebunden ist. Any hint?
Verfasst: 24. Juni 2005 10:58
von FlorianBecker
Könnte auch ein moc Problem sein.
Verfasst: 24. Juni 2005 11:01
von macman
FlorianBecker hat geschrieben:Könnte auch ein moc Problem sein.
That's it, danke.