[Python-de] Grafische Oberfläche

Andreas Pakulat apaku at gmx.de
Sam Okt 29 22:34:51 CEST 2005


On 29.10.05 18:08:07, Stefan Behnel wrote:
> Andreas Pakulat schrieb:
> > On 29.10.05 14:49:08, Hans-Peter Jansen wrote:
> >> Am Samstag, 29. Oktober 2005 13:13 schrieb Stefan Behnel:
> >>> Qt ist binärkompatibel über alle Versionen von Qt1 bis Qt3. Punkt.
> > 
> > Sicher? Ich denke nicht, innerhalb der Major Release Qt1, Qt2 und Qt3
> > liefert Trolltech Binaerkompatibilitaet ja, aber ich denke nicht ueber
> > Major Releases hinweg. Das wuerde bedeutet, dass die Klassen in Qt1
> > diesselben Methoden und Attribute haben wie in Qt3 und das glaub ich
> > wirklich nicht...
> 
> Ein für Qt 1.0 geschriebenes Programm läuft im Allgemeinen auch mit Qt3.

Mit ziemlicher Sicherheit tut es das nicht. Ich hab nur leider weder ein
kompiliertes Qt2 noch Qt1 Programm um es zu testen...

Du verwechselst hier Binaer mit Source-Kompatibilitaet. Ob Qt1-3
abwaerts-source-kompatibel sind, weiss ich nicht, aber
abwaerts-binaer-kompatibel sind sie bestimmt nicht. Denn dann duerften
sich die Variablenlisten genauso wie die Menge und Signaturen der
virtuellen Funktionen nicht geaendert haben. 

> Das ist einfach der Vorteil von OO beim Design von GUI-Toolkits.

OO hat aber mit der Source oder Binaerkompatibilitaet wenig zu tun,
ausser vllt. das C++-Bibliotheken wesentlich schwieriger
Binaer-kompatibel zu halten sind als C-Bibliotheken.

> Dass viele Dinge inzwischen ausgewechselt sind und manches veraltet
> oder aufs Abstellgleis geschoben, führt dann eben dazu, dass ein
> ordentlich für Qt3 geschriebenes Programm wohl nicht mehr mit Qt1
> funktioniert.

Richtig, source-aufwaertskompatibilitaet wuerde bedeuten es wird kein
Fortschritt im Design gemacht - das faellt eher unter Bugfix-Releases.

> >>> Qt4 war von Anfang an als Bruch der Kompatibilität geplant. Qt3 wird
> >>> weiter supportet und Qt4 enthält vieles, was den Umstieg bei Bedarf
> >>> erleichtert.
> > 
> > Aehm, schonmal auf der qt-interest-Liste mitgelesen? Offensichtlich ist
> > die Portierung eines Qt3-Programms auf Qt4 nicht nur "nicht einfach",
> > sondern sogar so kompliziert, dass ein Rewrite einfacher ist.
> 
> Vielleicht, und das stützt ja meine Aussage.

Wie gesagt, ich weiss nicht wie das beim Uebergang von Qt1 -> Qt2 -> Qt3
war (damals kannte ich dass noch nicht), aber beim Uebergang von Qt3 zu
Qt4 ist nicht nur Binaerinkompatibilitaet gegeben sondern zusaetzlich
auch noch Source und Design-Inkompatibilitaet hinzugekommen. Einige
Dinge sind jetzt mit einem ganz anderen Programmier-Pattern geloest
(z.B. die Model-View-Widgets).

> Es ist ja niemand gezwungen, zu
> Qt4 zu wechseln.

Ich vermute auf lange Sicht schon, aber ein paar Monate/Jahre wird Qt3
wohl noch ueberleben...

> Nur, wer mit Qt3-Software unbedingt die Möglichkeiten von Qt4 nutzen
> möchte, der darf sich das dann auch was kosten lassen.

?? Qt3 ist Qt3, wenn du deine Software komplett auf Qt4 umstellst, ist
das quasi ein Rewrite - wie gesagt.

> Trolltech hat nie einen Hehl daraus gemacht, dass der Umstieg nicht
> ohne Handarbeit gehen würde.

Das Problem ist aber: TT hatte extra fuer die "einfache" Migration die
Q3-Support-Klassen mitgeliefert, sowie Tools um die Qt3-Programme zu
konvertieren. Leider ist das Zeug so buggy dass man das ausfuehren der
meisten Qt3-Programme mittels der Qt3-Support-Klassen vergessen kann und
wirklich portieren muss auf Qt4. Da hat TT entweder zuviel PR-Arbeit der
Form "Wir haben Qt3-Support-Klassen, damit Qt3-Apps einfach auf Qt4
weiterlaufen koennen" (entspricht Source-Kompatibilitaet) oder zuwenig
QA bei den Klassen gemacht.

> >> Durch richtige OO ist die Struktur nachvollziehbar, und vorhersagbar 
> >> (predictable).
> > 
> > Naja, es gibt in Qt3 auch so ein paar "Ungereimtheiten", insbesondere
> > im Zusammenhang mit der QStringList, die eben keine QValueList<QString>
> > ist...
> 
> Was mir als Python Programmierer natürlich herzlich egal ist.

Hmm, wirklich? Was machst du wenn eine PyQt-Funktion dir eine
QStringList zurueckliefert? Konvertierst du das erst in eine
python-liste mit QStrings bzw. str? Ich gebe zu dass ich PyQt nicht
ausreichend ausprobiert hab um auch mal zu schauen wie das mit den
Containerklassen von Qt funktioniert... 

Andreas

-- 
Living your life is a task so difficult, it has never been attempted before.