Hi, ich bin Student (technische Informatik) und möchte mich in Qt reinarbeiten. Meine Frage ist jetzt ob ich da die richtige Entscheidung getroffen habe. Gibt es eurer Meinung nach was besseres? Was wird in der Industrie benutzt? (Ich möchte mit Embededsystemen + GUI arbeiten können.) Gruß Toni
Hi, Ich bin zwar kein Profi, aber was eione ganz klare stärke von Qt ist, ist die (fast) Platformunabhängigkeit. In meiner Letzten Firma wurde in allen Embedded Systemen (leider) Windows NT/XP eingesetzt und daruf leif dann ein ich denk VCPP Program. Mfg Bouni
Im embedded Umfeld kenne ich Qt nicht, aber grundsätzlich ist es eine feine Sache, auch der Qt GUI Designer ist ziemlich heiss.
Bin auch der Meinung, dass Qt ne feine Sache ist, gerade wegen der Plattformunabhängigkeit und es ist ein sehr umfangreiches Framework mit vielen Bibliotheken. Ich denke aber, dass es in der Industrie noch nicht sehr verbreitet ist. Gut, ein Beispiel ist, Siemens benutzt Qt für die Bedienoberfläche von Bestückungsautomaten. Gerade im Bereich Handy/Mobile Devices wird sich aber Qt wohl weiter durchsetzen, Trolltech ist nicht umsonst gerade von Nokia gekauft worden. Ansonsten wird auch viel WindowsCE & VC++ benutzt.
Najo, Qt ist kompakt (Embedded!), portabel, sieht toll aus und ist quelltextmäßig so ziemlich das Hässlichste, was du finden wirst... Ernsthaft, es ist flott und so weiter, aber du arbeitest immer mit einer Katze im Sack: QT bringt nämlich einen Meta-Object-Compiler mit, der hinter deinem Rücken den Code für des Signal-Zeuchs generiert. Eine saubere Lösung ist das m.E. nach nicht, aber was will man machen...
> ... quelltextmäßig so ziemlich das Hässlichste, was du finden wirst ...
Du hast wohl noch nie GTK, MFC oder Motif-Quelltexte gesehen...
Den Quelltext, den du als QT-Anwender programmieren darfst, ist sehr
schön und kompakt.
Der Zusatz-Quelltext, der vom MOC generiert wird, weniger. Aber den muss
sich ja keiner anschauen.
Das "Katze im Sack" Argument zieht auch nicht, QT ist GPL (und bei den
Komerz-Versionen kriegst du auch den Quelltext mit), d.H. notfalls
kannst du dir den MOC so umpatchen, dass er dir gefällt...
Klar, die Signal-Slot Geschichte könnte man auch über Templates
erschlagen (libsigc++), und die Typinformationen/Introspection würden
zum Teil auch über RTTI funktionieren.
Dummerweise konnten das viele C++ compiler damals noch nicht (kein
Member-Template support etc).
Und die QT-Implementierung hat auch den Vorteil, dass zur Compile-Zeit
noch nicht festgelegt sein muss, welche Objekte wie verbunden werden,
was z.B. die Plugin-Entwicklung vereinfacht.
Fazit: Schau dir QT an, nutzloses Wissen ist das in keinem Fall.
Die C++-Spracherweiterung für das Signal/Slot-System ist C++-Puristen natürlich ein Dorn im Auge, als Nichtpurist kann man aber damit leben. Wie es ohne Spracherweiterung geht, zeigt libsigc++, die das Ganze sehr elegant unter Verwendung von C++-Templates realisiert. M.W. waren die C++-Templates zu Beginn der Qt-Entwicklung noch nicht reif und standardisiert genug, so dass man eine andere, nach dem heutigen Stand der Technik nicht mehr ganz passende Lösung gewählt hat. libsigc++ wird in gtkmm, einem C++-Frontend für die GUI-Bibliothek GTK+ eingesetzt. GTK+ ist, zumindest auf Desktoprechnern, die direkte Konurrenz von Qt. Die Diskussion, welches von beiden besser ist, ist endlos und deswegen müßig. In wie weit GTK+ für Embedded-Anwendungen geeignet ist, weiß ich nicht. Jedenfalls gibt es auch hier eine Variante, die direkt auf einem Framebuffer arbeitet und damit ohne X11 auskommt. Die Plattformunabhängigkeit von GTK+/gtkmm ist ähnlich wie die von Qt: Linux, Windows, embedded Linux mit Framebuffer und MacOS X. Allerdings kommt m.W. jede Variante von einer anderen Entwicklergruppe, so dass die Nicht-Linux-Versionen immer etwas hinterherhinken. Funktionieren tut aber zumindest auch die Windows-Variante ganz gut, was ich bei selbstgeschriebenen GUI-Programmen erfahren habe, die sich ohne Quellcodeänderungen wahlweise unter Linux oder Windows übersetzen lassen und problemlos auf beiden Betriebssystemen laufen. Mit der MacOS- und der Framebuffer-Version habe ich keine Erfahrung.
Vorerst danke für die Antworten. Dennoch will ich auf meine Frage nochmal genauer eingehen: Also ich hab gelernt/gesehen dass man eine Programiersprache + Framework nicht einfach so mal kurz lernt. Ein Schreinermeister (Tischler) der von sich behauptet GUT oder SEHR GUT zu sein hat das nicht kurz in einem oder zwei Jahr(en) gelernt. Genau so ist es meiner Meinung nach in der IT-Welt. Um wirklich GUT zu sein, oder anders gesagt, um wirklich effizient Anwendungen entwickeln zu können, muss man einiges an Zeit investieren. Die Frage ist nun, (wie schon erwähnt) mit welchem Werkzeug/System will ich arbeiten/lernen. Bisher habe ich sehr gute bis gute Kentnisse in C++. Ich weiß, die Frage ist ansich nicht direkt zu beantworten, aber vieleicht schreibt der eine oder andere noch einpaar Erfahrungsberichte. Das hilft meistens sehr. Toni
Ok, wenn Du das so siehst... In diesem Fall würde ich Dir nicht empfehlen Dich als Student 2 oder 3 Jahre mit so einem Spezialthema wie Qt zu beschäftigen. Wenn Du gut C/C++ kannst ist das schonmal ein solider Background und Du wirst keine grossen Schwierigkeiten haben Dich in was ähnliches einzuarbeiten. Mir ging das ähnlich wie Dir und ich habe mich daher vor ca. einem Jahr ein bischen in Qt eingelesen und das dann in 4 kleinen (2-3 Wochen) Projekten eingesetzt. Wenn jetzt mal was grösseres kommen sollte, kann ich sagen, das ich da solide Grundkenntnisse habe und mich dann dranwagen. Aber mehr Zeit würde ich da nicht reinstecken, es gibt noch andere wichtige Sachen und vielleicht gibts in 2 Jahren Qt gar nicht mehr (ok ich weiss ist unwahrscheinlich, aber ich würds nicht drauf ankommen lassen ;) Achso, und was ich bis jetzt wirklich in der Industrie gesehen habe: Delphi (auf Windows), Eigenentwicklung (auf DOS!), Kylix (auf Linux), VC++ (auf WinCE) Gerade darum würde ich mich an Deiner Stelle nicht zu sehr spezialisieren...
es gab eine Zeit, da habe ich auch mal geglaubt, meine Kenntnisse von C/C++ seinen gut bis sehr gut - bis ich die Schule abgeschlossen habe und zum ersten mal einen MISRA Checker über den Quellcode laufen lassen musste und ab da habe ich meine Meinung irgendwie geändert...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.