Seite 1 von 2

Code wird zu umständlich

Verfasst: 24. Juni 2007 04:24
von Treehouse
Hallo zusammen,

ich befasse mich jetzt seit ca. 2 Wochen mit der Qt 4.3 Version. Ich habe schon einige kleine Programme geschrieben. Leider fällt mir dabei immer mehr auf, dass der Code an einigen stellen wirklich umständlich wird. z.b wenn eine Funktion mit string raus kommt muss man erst mal in QString umwandeln um damit weiter arbeiten zu können.

Ich studiere Informatik und eigentlich bringt man uns bei gui und funktionen von einander sauber zu trennen. So das man zu seinem eigentlichem Programm immer nur die Gui anpassen muss und nicht das ganze programm neu aufziehen muss. Nur leider ist dies mit einem derartigen aufwand bei Qt verbunden da man alles auf Q's erst mal wieder abändern muss das ich wirklich euch mal fragen wollte wie ihr so programmiert. Also ob ihr rein die Qt dinge benutzt oder ob ihr auch gui und programm von einander trennt??

Ich möcht noch sagen das ich die Qt programmirung soweit eigentlich super finde also ich möchte wirklich keinen Flame jetzt vom Zaun brechen.
Aber ich muss das mal ansprechen weil ich finde auch nicht genug infos darüber.

Ich will ja vermeiden das man nachher zu einem Inselprogrammierer wird nur weil man das Konzept nicht richtig verstanden hat.

Gruß

Treehouse

Verfasst: 24. Juni 2007 08:13
von upsala
Warum sollte bei einer Funktion string rauskommen? Verwendest du 2 verschiedene Bibliotheken? Qt und xy? Ansonsten spricht ja nichts dagegen in deinem gesamten Programm QString zu verwenden, oder?

Verfasst: 24. Juni 2007 12:19
von Treehouse
Ich meinte das der Rückgabewert string ist. Und dagegen spricht das die kernfuntionen dann abhäning von der Qt sind. Wenn man dann eine andere GUI lib nutzen will z.b Gtk muss man das ganze Programm abändern und nicht nur den Gui Teil neuschreiben.

Gruß

Treehouse

Verfasst: 24. Juni 2007 13:11
von upsala
Wobei aber der Vorteil von Qt ist, daß es Plattformunabhängig und sich (fast) jedem Style anpassen kann.

Verfasst: 24. Juni 2007 13:12
von upsala
Und: Qt ist nur eine GUI...

//edit: Ok ein 'nicht' vergessen...

Verfasst: 24. Juni 2007 13:40
von Treehouse
Sag mal ich will ja nicht patzig wirken. Aber was hat das jetzt eigentlich mit meiner Frage zu tun ? Zum anderen wenn Qt nur eine GUI ist ...... dann sollte man auch nicht so sachen wie QString, QMap, QVector etc darin finden.

Wobei ich mich jetzt immer noch frage wie ihr es mit Qt schafft Gui unabhänigen code zu erzeugen ?

Gruß

Treehouse

Verfasst: 25. Juni 2007 07:36
von macman
Man sollte schon bei Qt bleiben und es nicht als Wrapper für C-Funktionen ansehen.

Verfasst: 25. Juni 2007 09:37
von NoobSaibot
Also an deiner Stelle, wenn du denn tatsächlich zwischen Frameworks hin und her springen willst, würde ich ein Makro einsetzen; für deine Konvertierung QString zu std::string z. B..

So ganz wirst du da nicht unabhängig sein, da die meisten (?) großen GUI Frameworks auch eigene Erweiterungen der Standard C++ Klassen mitliefern; ganz einfach deswegen um es *uns* gemütlicher zu machen.

Meine Programme, um mal deine Frage zu beantworten, sind völlig GUI unabhängig. Die sind jedoch nicht Framework unabhängig.

Verfasst: 25. Juni 2007 11:41
von ArneStocker
Ich studiere Informatik und eigentlich bringt man uns bei gui und funktionen von einander sauber zu trennen. So das man zu seinem eigentlichem Programm immer nur die Gui anpassen muss und nicht das ganze programm neu aufziehen muss.
ich denke mal - wie alles im Leben - lässt sich sowas nie 1:1 durchhalten, schon gar nicht, wenn man auf unterschiedliche Plattformen und unterschiedlichen Konzepte mit den jeweiligen Macken und Dialekten aufsetzen will.

Wenn Du z.B. plattformunabhängig programieren willst, lässt sich Dein Prinzip nicht sauber durchhalten, weil z.B. auf unterschiedlichen Plattformen die C++ Spezifikationen unterschiedlich implementiert werden (ich hoffe ich sage jetzt keinen Blödsinn).

Ich habe z.B. für mich - auch ein hehrer Grundsatz - beschlossen, die Persistenzsschicht sauber vom restlichen Programm zu trennen. Nur leider geht das dann wieder an einigen (allerdings eingrenzbaren) Stellen zu Lasten des OO Prinzips, nach der alle Objekte nichts von der eigentlichen Struktur des Programms wissen sollten.

Also kommt es immer auf Dein Projekt an und an die Art des Kompromisses, den Du schließen möchstest.

Gruß Arne

Verfasst: 27. Juni 2007 00:15
von Treehouse
Hey hallo

vielen dank für eure antworten freut mich das ihr euch dazu geäußert habt.

Also ich werde es glaub ich so machen das ich immer eine Klasse für die reine Oberfläche habe und dann diese, wie Qt es als möglichkeit vorgibt, an eine andere Vererbe um dann schließlich darin dir kompletten funktionen dieses einen Fensters zu implementieren.

Ich denke das ich damit die sauberste Lösung gewählt habe. So bleiben immer schön die Funktionen vom eigentlichen fenster getrennt. Dann benutzte ich zwar immer noch nicht Qt freies C++ in den Hauptfunktionen aber wie Anre Stocker schon sagte kann man das glaub ich auch nicht mal eben so 1:1 umsetzen ohne über sieben Brücken nach Rom zu fahren.
Und ich denke auch mal das es dann nicht im Sinne des Qt tooltkits ist das man dieses auch nicht voll ausschöpft.

Denn wofür hat man sonst diese ganzen tollen weiter entwicklungen die C++ einem zum jetzigen Zeitpunkt noch nicht bietet.

Gruß

Treehouse

Verfasst: 27. Juni 2007 16:15
von lepsai
Am besten ist es, wenn Du Model --> View Trennung hast. Dann ist GUI komplett unabhängig von deinen Datenschnittstellen. Identisch lässt sich auch Trennung von Programmlogik und GUI umsetzen. Bei deiner Vorgehensweise sehe ich dagegen keine Vorteile.

Verfasst: 27. Juni 2007 16:56
von Treehouse
lepsai hat geschrieben:Am besten ist es, wenn Du Model --> View Trennung hast. Dann ist GUI komplett unabhängig von deinen Datenschnittstellen. Identisch lässt sich auch Trennung von Programmlogik und GUI umsetzen. Bei deiner Vorgehensweise sehe ich dagegen keine Vorteile.
Dann erkläre mir doch bitte mal wie man sowas am besten macht vielleicht mit einem kleinen Beispiel.

Damit wäre mir sehr geholfen

Gruß

Treehouse

Verfasst: 27. Juni 2007 18:41
von lepsai
Verbindung von Datenmodel und GUI ist am Besten durch Design Pattern Observer/Observable erklärt, zu finden in Wikipedia, ich glaub, da gibt es auch Codebeispiel dazu...

Verfasst: 27. Juni 2007 19:15
von NoobSaibot
lepsai: hier geht es konkret um Qt und nicht um design patterns

Verfasst: 27. Juni 2007 22:56
von Treehouse
Also es tut mir leid ich dachte ich hätte es verstanden, Aber jetzt versteh ich gar nix mehr.

Ist es denn so schwer zu beschreiben wie ihr sowas umsetzt?? :roll:

Ich lese z.b gerade das Buch C++ Gui Programming with Qt. Darin bin ich jetzt beim Beispiel
mit einer Tabellen anwendung. Diese wird z.b auch so geschrieben das in einer Klasse die Gui implementiert wird und in einer andern die Funktionen. Und das ist nichts anderes was ich oben beschrieben habe .............. also was bitte ist denn nun so falsch an der Sache .

Wäre schön wenn es einfach mal eine klare antwort vielleicht mit einem Beispiel dazu geben würde anstatt einfach immer drum her rum zu reden.

Gruß

Treehouse