Diese Frage taucht hier im Forum immer wieder auf - ich möchte versuchen hier 2 der wichtigsten Toolkits zu erklären.
Ich versuche das ganze so weit wie möglich neutral und ohne direkte Wertung der Toolkits durchzuführen.
Wer andere Toolkits vorstellen möchte, der soll sich bitte keinen Zwang antun, aber diese beiden kenne ich gut genug um etwas dazu zu schreiben . Wir können das dann ja später in einem weiteren Thread und in einem großen Post bündeln, damit dieses Thema endlich mal eine Referenz bekommt, hehe^^.
Dieses Toolkit ist ein kommerzielles OpenSource-Toolkit der Firma Trolltech. Auf diesem Toolkit basiert der Linux-Desktop KDE.
Ab Version 4.5 ist QT unter LGPL veröffentlicht, welches auch die kommerzielle Nutzung erlaubt, solange dynamisch gelinkt wird.
Das Toolkit kommt mit einem Designer, einem Übersetzungesprogramm, welches ähnlich wie GNUs gettext arbeitet. Zusätzlich hat es den QT-Assistant, welches es dem Entwickler erlaubt, die Dokumentation in einem eigenen Format abzulegen, welches Platformübergreifend nutzbar ist. Ähnelt ein wenig den *.chm-Hilfedateien von Microsoft.
Da QT eine Art Präprozessor (qmake) verwendet, ist es leider nötig, dass eine Projektdatei händisch erstellt wird, das die Erstellung des Makefiles für den jeweiligen Compiler regelt. Das macht es für Einsteiger in C++ und vor allem für Leute, die den Umgang mit Makefiles bzw Programmen wie Bakefile oder CMake nicht gewohnt sind, nicht einfach.
Abhilfe schafft hier ein kostenloses Integrationskit für Eclipse und ein zukaufbares Integrationskit für Visual Studio bzw Visual C++ ab Standard. Oder man verwendet Code::Blocks, welches die Integration von QT von Haus aus mitbringt. Es gibt auch eine IDE für QT, welche sich QDevelop nennt. Dieses ist allerdings NICHT aus dem Hause Trolltech, sondern ein seperates Projekt.
Seit Version 4.5 kommt QT mit QtCreator, eine sehr gute und intuitive IDE mit integriertem Editor. Liefert auch als Compiler MinGW mit, der benötigt wird. QtCreator führt alle nötigen Schritte selbst aus und es macht richtig Spaß damit zu arbeiten, da auch das Intellisense gut funktioniert.
Dessen nicht genug, kann QT sogar mit Hilfe von DirectX und OpenGL direktes Rendering anbieten und ist daher als Toolkit für Game-Applikationen wie Level-Designer etc geeignet (kann das jemand bestätigen?)
Kleine Anmerkung: Das Toolkit schimpft sich selbst "High-Performance-Toolkit".
Hier nochmal alle Punkte auf einen Blick:
* Sehr komplettes Toolkit
* Viele Beispiele die den Einstieg erleichtern
* Beispielhafte Dokumentation
* Eigene Projektdateien und Vorbearbeitung durch eigenes (mitgeliefertes) Programm nötig
* Platformübergreifend: Linux, Mac, WindowsXP.
* Unterstützt direktes DirectX (windows only) und OpenGL-Rendering.
* Nativ aussehende Widgets.
* Style-Support
wxWidgets ist ein OpenSource Projekt mit einem kleinen Stamm von Hauptentwicklern (Projekt-Starter ist Julian Smart von der Universität Edingburgh) und einer wirklich großen Community, die mit ihren Beiträgen dem ganzen zu einer Allround-Lösung verhelfen.
Eine Stärke des Toolkits ist es, dass man es für alle Arten der Entwicklung kostenlos und ohne Lizenz-Gebühren verwenden kann.
wxWidgets bietet für Lokalisierungen ebenfalls eine Lösung, indem es einfach gettext-Dateien liest. Das heisst für den Anwender, dass die .mo-Dateien mit jedem beliebigen Programm erstellt werden können (als Bsp. PoEdit oder direkt gettext).
Einen Designer ähnlich wie bei QT kann man als externe Projekte beziehen, hier gibts etliche Anbieter. So bietet wxFormBuilder ein Programm, das vom Aufbau an den QT-Designer erinnert, die wxWidgets-Developer bieten ein eigenes Programm zum Kauf an und Code::Blocks kommt mit einem integrierten Designer. Welchen man letztendlich verwendet ist egal. Im Unterschied zu QT kommt wxWidgets ohne einen Präprozessor aus, es ist keine direkte Integration in die IDE nötig um ein wxWidgets-Programm zu kompilieren. Die Dateien die der Formdesigner ausspuckt kann man entweder als C++-Code einbinden oder als sogenannte wxrc-Datei zur Laufzeit laden. Das macht dieses Toolkit sehr flexibel, da nicht jede Änderung an einem Dialog neu einkompiliert werden muss, sondern dynamisch über diese Datei ladbar ist.
Auch ein eigenes Hilfeformat ist mit dabei, das allerdings ohne Viewer oder ähnliches auskommt: Es werden einfach .zip-Dateien mit einer bestimmten Struktur erstellt. Diese können dann von der entsprechenden Klasse geladen werden und mit dem Programm angezeigt werden.
Ein weiterer Punkt ist, dass wxWidgets immer zuerst versucht, native Widgets zu
verwenden, bevor eigene Widgets zum Einsatz kommen.
Ein häufiger Kritikpunkt an wxWidgets ist seine sehr starke Verwendung von Makros und seine "MFCness". Hier liegt das "Problem" im Ursprung: wxWidgets wurde in den 90ern begonnen und MFC war damals auf der Höhe der Popularität und viele wünschten sich diese Form. Ein weiterer Kritikpunkt ist, dass C++-Mechanismen nicht effizient genutzt werden, da gehen die Meinungen aber auch weit auseinander. Das Bild muss sich am ende jeder selbst machen.
Hier nochmal alle Punkte auf einen Blick:
* Große Community mit vielen Beiträgen
* Viele externe Programme und Designer
* Externe IDE (Code::Blocks) mit internem Designer
* Kostenlos Nutzbar, auch für kommerzielle Projekte
* Beispielhafte Dokumentation
* Viele Beispiele die den Einstieg erleichtern
* Native Widgets.
* Platformübergreifend: Linux, Windows, Mac, Sun OS
GTK kommt von Linux und wurde für den Gnome Desktop entwickelt, steht aber auch unter Windows und Mac zur Verfügung. GTK an sich besteht aus mehreren libs:
* GLib - der Kern, der die Widgets und Fenster zur Verfügung stellt
* Pango - Eine Bibliothek zum rendern von Text unter Beachtung von i18n.
* Cairo - eine Bibliothek zum rendern von 2D-Bildern.
* ATK - Eine Bibliothek für die sog. Accessibility.
GTK an sich besteht aus einem C-Interface, bietet aber mit GTKmm (http://gtkmm.org) auch ein C++-Interface an. Damit ist GTK sehr vielseitig. Ausserdem zeichnet GTK seine Fenster und Widgets selbst, was ein Vor- (portabilität) aber auch ein Nachteil sein kann. Wenn Programme sich auf einer Platform "fremd" anfühlt bzw nicht den selben L&F hat wie der Rest, dann tendieren User dazu sich Alternativen zu suchen. GTK ist genauso wie die anderen unter LGPL verfügbar, also in kommerziellen Projekten nutzbar. Mit Anjuta liefert GTK sowohl unter Gnome als auch auf anderen Platformen eine sehr brauchbare IDE mit integriertem Designer. Das macht GTK durchaus interessant.
Hier nochmal alle Punkte auf einen Blick:
* Große Community mit vielen Beiträgen
* Viele externe Programme und Designer
* Kostenlos Nutzbar, auch für kommerzielle Projekte
* Gute Dokumentation
* Viele Beispiele die den Einstieg erleichtern
* Keine native Widgets.
* Platformübergreifend: Linux, Windows, Mac
_________________ Sometimes it pays to stay in bed in Monday, rather than spending the rest of the week debugging Monday's code. ~Dan Salomon
Meine Projekte
Zuletzt bearbeitet von Scorcher24 am 11:05:26 11.03.2009, insgesamt 2-mal bearbeitet
Recht viel hat sich da ja in den letzten 4 Jahren nicht getan, IMO. Aber es zu aktualisieren wo sich was getan hat ist sicher nicht schlecht
--
Woher du die Infos zu wxWidgets 3.0 nimmst, ist mir allerdings schleicherhaft. http://wiki.wxwidgets.org/Development:_wxWidgets_3 hat sich seit Jahren kaum mehr geaendert, und noch vor einem Jahr hiess es:
First, a word of reassurance: there are no sweeping backwards-incompatible changes in wxWidgets 3.0 compared to 2.8. We did have to break compatibility in a few places but fixing the existing code to compile with 3.0 will be trivial, if needed at all, unlike 1.0 -> 2.0 transition which required rewriting it.
Was - zumindest fuer mich - bedeutet dass die alte API erhalten bleibt => kein boost, keine STL, immer noch MFC-Style. Was sind deine Quellen?
_________________ I have come here to chew memory and kick ass... and malloc() is returning a null pointer. This message has been ROT-13 encrypted twice for higher security. http://bluetiger.bauchlandung.org/
Zuletzt bearbeitet von Blue-Tiger am 18:01:12 29.12.2008, insgesamt 2-mal bearbeitet
Der zitierte Wiki-Eintrag ist wie gesagt nur eine Ideensammlung, deren Kern schon seit Jahren der Selbe ist. Was davon uebernommen wird, steht in den Sternen, wobei der von mir zitierte Blog-Eintrag vermuten laesst, dass all die hochgestochenen Ideen (Integration von Boost, STL, Modernisierung der API) fallen gelassen wurde. Abgesehen von einem einzigen Beitrag in den wxWidgets-Blog im August diesen Jahres bzgl. Unicode in wxWidgets3 hab ich noch absolut gar nix Konkretes darueber gehoert, was jetzt wirklich passiert. Aber ich befuerchte viel mehr als ein "wxWidgts2.8 mit UTF-8" wirds nicht
_________________ I have come here to chew memory and kick ass... and malloc() is returning a null pointer. This message has been ROT-13 encrypted twice for higher security. http://bluetiger.bauchlandung.org/
Zuletzt bearbeitet von Blue-Tiger am 22:46:05 29.12.2008, insgesamt 3-mal bearbeitet
_________________ Sometimes it pays to stay in bed in Monday, rather than spending the rest of the week debugging Monday's code. ~Dan Salomon
Meine Projekte
Der Text zu Qt ist leider nicht mehr ganz aktuell:
Dieses Toolkit ist ein kommerzielles(ist mittlerweile komplett LGPL-lizensiert) OpenSource-Toolkit der Firma TrolltechNokia. Auf diesem Toolkit basiert der Linux-Desktop KDE.
Ab Version 4.5 ist QT unter LGPL veröffentlicht, welches auch die kommerzielle Nutzung erlaubt, solange dynamisch gelinkt wird. (ah okay, denke, das erste "kommerziell" könnte aber zu abschreckend wirken [so wie bei mir ])
Das Toolkit kommt mit einem Designer, einem Übersetzungesprogramm, welches ähnlich wie GNUs gettext arbeitet. Zusätzlich hat es den QT-Assistant, welches es dem Entwickler erlaubt, die Dokumentation in einem eigenen Format abzulegen, welches Platformübergreifend nutzbar ist. Ähnelt ein wenig den *.chm-Hilfedateien von Microsoft.
{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
Da Qt eine Art Präprozessor (qmakemoc(qmake ist nur eine Art Metamakefile, ähnlich CMake)) verwendet, ist es leider nötig, dass eine Projektdatei händisch erstellt wird, das die Erstellung des Makefiles für den jeweiligen Compiler regelt. Das macht es für Einsteiger in C++ und vor allem für Leute, die den Umgang mit Makefiles bzw Programmen wie Bakefile oder CMake nicht gewohnt sind, nicht einfach.
Abhilfe schafft hier ein kostenloses Integrationskit für Eclipse und ein zukaufbares Integrationskit für Visual Studio bzw Visual C++ ab Standard. Oder man verwendet Code::Blocks, welches die Integration von QT von Haus aus mitbringt. Es gibt auch eine IDE für QT, welche sich QDevelop nennt. Dieses ist allerdings NICHT aus dem Hause Trolltech, sondern ein seperates Projekt.
}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} (generell obsolet seit QtCreator, händisches Editieren nur selten nötig)
Seit Version 4.5 kommt QT mit QtCreator, eine sehr gute und intuitive IDE mit integriertem Editor. Liefert auch als Compiler optional MinGW mit, der benötigt wird, bietet Unterstützung für Microsoft's Compiler, kann aber generell für jeden Compiler angepasst werden. QtCreator führt alle nötigen Schritte selbst aus und es macht richtig Spaß damit zu arbeiten, da auch das Intellisense und Debugging gut funktioniert.
Dessen nicht genug, kann QT sogar mit Hilfe von OpenGL direktes Rendering anbieten und ist daher als Toolkit für Game-Applikationen wie Level-Designer etc geeignet (kann das jemand bestätigen? <- DirectX wird nicht direkt unterstützt)
Kleine Anmerkung: Das Toolkit schimpft sich selbst "High-Performance-Toolkit".(Quelle?)
Hier nochmal alle Punkte auf einen Blick:
* Sehr komplettes Toolkit
* Viele Beispiele die den Einstieg erleichtern
* Beispielhafte Dokumentation
* Eigene Projektdateien und Vorbearbeitung durch eigenes (mitgeliefertes) Programm nötig
* Platformübergreifend: Linux, Mac, WindowsXP.
* Unterstützt direktes DirectX (windows only) und OpenGL-Rendering.
* Nativ aussehendeNative Widgets sowie eine Handvoll Styles, welche die Widgets anderer Betriebsysteme und Fenstermanager imitieren.
* Style-Support
* Stylesheet-Support (Stylesheets und Styles gibt es beides in der Qt-Welt, sind aber unterschiedliche Unterframeworks)
Zuletzt bearbeitet von phreck am 17:13:53 17.02.2011, insgesamt 1-mal bearbeitet
ich bin neu hier im Forum.
Habe bisher immer Win32-Anwendungen mit Delphi entwickelt, möchte aber zukünftig weitestgehend plattformunabhängig in C++ programmieren.
Welche Libs sollte ich mir eurer Meinung nach reinziehen? Es gibt ja regelrechte Forenkriege zwischen Qt und wxWidgets Verfechtern. Vielleicht gibt es ja auch noch andere Empfehlungen von euch...
Etwas eingerostete Grundkenntnisse in C++ habe ich noch, denke ich. Habe früher Konsolenprogramme und MFC programmiert.
Für mich ist wichtig zukunftsorientiert und plattformunabhängig zu programmieren, deshalb will ich weg von Delphi.
Der Einstieg sollte nicht zu schwer sein. Kostenlos wäre natürlich am besten. IDE Kenntnisse habe ich in Code::Blocks und Visual Studio Express Edition.
Wichtig wäre auch, ob die Lib auch in der Arbeitspraxis eingesetzt wird, man will ja auch an die eigene Job-Sicherheit denken.
Vielleicht hat der eine oder andere einen guten Tipp oder persönliche Erfahrungen für mich...
wxWidgets wird genauso in der Praxis eingesetzt wie QT.
Unreal Engine nutzt als Beispiel wxWidgets für das Fenster bzw den Editor.
Beides ist zukunftssicher.
Beide haben Vor- und Nachteile.
Wenn du auf Nummer sicher gehen willst, lern beide :P.
_________________ Sometimes it pays to stay in bed in Monday, rather than spending the rest of the week debugging Monday's code. ~Dan Salomon
Meine Projekte
Nächstes Thema anzeigen Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben. Sie können auf Beiträge in diesem Forum antworten. Sie können Ihre Beiträge in diesem Forum nicht bearbeiten. Sie können Ihre Beiträge in diesem Forum nicht löschen. Sie können an Umfragen in diesem Forum nicht mitmachen.
c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums
für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de
Werbekostenerstattung verdient werden kann.
Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de
enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt
(vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in
privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden.
Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere
übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.