GUI-Toolkits welches?



  • Ich bin noch Anfänger und überbelege welches Toolgit ich nutzen sollte, um einfache GUIs unter primär Windows und weiterhin Linux/Mac zu entwickeln.
    Ich habe mir Codeblocks mit wxWidgets angeschaut und QT.
    Meine Frage nun was würdet Ihr mir Empfehlen auch aus der Sicht der IDE?
    Oder ist einen Editor wie Notepad++ zu bevorzugen?

    Danke für Tipps 🙂



  • wxWidgets:
    Visual Studio 2012 Express + wxFormBuilder

    QT:
    QCreator

    Ich empfehle wxWidgets.



  • Hi Kunstlust,

    wenn du primär für den Windows Desktop programmieren willst, empfehle ich auch wxWidgets...die GUI wird dort nativ per WinAPI genutzt.
    Unter Mac OSX das gleiche.
    Unter Linux gibt es sozusagen ja mehrere "native" GUIs 🙂 Hier wird jedoch GTK2 verwendet. Man kann sagen, GTK ist so ziemlich das Haupt-GUI-Toolkit unter Windows. Beachte jedoch, dass GTK2 Anwendungen erstellt werden...und nicht die der aktuellen Version 3. Und Version 4 ist auch schon wieder in Diskussion 🙂

    wxWidgets kannst du mit einem Editor deiner Wahl programmieren. Ich empfehle allgemein Code::Blocks (ist fabelhaft und trotzdem recht schlank). Es hat auch einen wxWidgets GUI Builder eingebaut (wxSmith), jedoch ist der externe wxFormBuilder beliebter.

    Mit Visual Studio wirst du aber wohl nur Windows Programme kompilieren können. Wenn du den GNU GCC Compiler nimmst, kannst du auf jedem System dein Programm kompilieren (das willst du ja). Mit Code::Blocks kannst du den GNU GCC nutzen. Und Code::Blocks läuft auch unter Linux und Mac.

    Ach und als kleines extra, kannst du mit dem GNU GCC aus Cross-Compilen. Das heißt, wenn du nur einen Windows-Rechner hast, aber einem Freund ein Programm geben willst, der nur einen Mac hat, so kannst du auf deinem Windows-Rechner das Programm trotzdem für Mac kompilieren, welches dann bei Ihn läuft 😉



  • Man kann sagen, GTK ist so ziemlich das Haupt-GUI-Toolkit unter Windows

    Selten so einen Blödsinn gelesen.

    Und Visual Studio hat den besten Debugger. Da beisst die Maus keinen Faden ab.
    Wer unter Windows nicht zu VS greift muss Masochist sein.



  • Beefi schrieb:

    Man kann sagen, GTK ist so ziemlich das Haupt-GUI-Toolkit unter Windows.

    Du meinst doch bestimmt Linux.

    Beefi schrieb:

    Ach und als kleines extra, kannst du mit dem GNU GCC aus Cross-Compilen. Das heißt, wenn du nur einen Windows-Rechner hast, aber einem Freund ein Programm geben willst, der nur einen Mac hat, so kannst du auf deinem Windows-Rechner das Programm trotzdem für Mac kompilieren, welches dann bei Ihn läuft 😉

    Funktioniert das denn wirklich? Ich kenne das von Mac > Linux, aber von Win > Mac wäre mir neu und würde mich wirklich interessieren.



  • Man kann sagen, GTK ist so ziemlich das Haupt-GUI-Toolkit unter Windows.

    Du meinst doch bestimmt Linux.

    Boah, tut mir leid, da hab ich mich natürlich verschrieben. Ich meinte natürlich Linux 🙂 Zum Glück hab ich noch ne Vorschau gemacht, bevor ich Scorcher24 jetzt meinen Senf geschickt hätte 😃

    Und Visual Studio hat den besten Debugger. Da beisst die Maus keinen Faden ab.
    Wer unter Windows nicht zu VS greift muss Masochist sein.

    Er will doch auch für Linux und Mac entwickeln...da finde ich ehrlich gesagt den GNU GCC und eine Systemübergreifende IDE besser. Visual Studio ist halt wieder so ein Nur-Windows-Programm. Wenn jemand schon nur daran denkt, für Linux zu programmieren, hat er doch bestimmt vor, es auch zumindest parallel zu installieren (wenn er es eh nicht schon getan hat). Es ist doch doof, immer Windows zu booten, um hier zu schreiben und dann wieder Linux zu booten, um das Programm in der Praxis zu testen...und wieder booten und wieder booten. Es gibt IDEs die eben auf allen Systemen laufen...und wenn er mal ein Programm schreiben will (auch mit wxWidgets), welches abgesehen von der GUI noch Systemabhängige Bibliotheken braucht, dann hat er unter Mac oder Linux ein Problem und muss mit einer zweiten IDE arbeiten.

    @Kunstlust:
    - Du kannst unter Visual Studio 2010 mit einen Umweg (vielleicht auch 2012) auch andere Compiler verwenden. Und zwar wird hier ein Makefile erstellt, welches du dann per Hand in der Konsole mit einem beliebigen Compiler kompilieren kannst...so bekommst du das Programm auch auf Mac/Linux.
    Ich weiß jedoch nicht, ob die Visual Studio Express Version (= kostenlos) das unterstützt.

    - Zudem lassen sich mit der kostenlosen Expressversion ab einschließlich 2012 nur noch Metro Apps programmieren. Wie das jetzt mit purem C++ aussieht weiß ich gar nicht so wirklich...Windows-Desktop-Anwendungen sind jedenfalls nicht möglich. Falls du doch noch reine Konsolen-Anwendungen in C++ kompilieren kannst, soll aber der nächsten Version damit angeblich Schluss sein...laut meiner Info will Microsoft in den Expressversionen den Compiler gar nicht mehr mitliefern. Man solle mich hier aber berichtigen.

    - Programme die mit Expressversionen entwickelt wurden, darfst du nicht kommerziell einsetzen. Aber das wird erstmal nicht das Problem sein.

    - Visual Studio ist wirklich eine extrem aufgeblähte IDE 😃

    - Es gibt auch andere Debugger wie zb den GNU GDB 🙂

    Funktioniert das denn wirklich? Ich kenne das von Mac > Linux, aber von Win > Mac wäre mir neu und würde mich wirklich interessieren.

    Hier ist ein Link, wo MinGW (GCC) als Cross-Compiler geführt wird. Neben Cygwin in einer Virtuellen Maschine, soll MinGW es in "echt" können: http://www.lowlevel.eu/wiki/Cross-Compiler
    Und nach meinem Wissen sollte es der MinGW bereits ab Version 4.x können.
    Ich hab den Weg von Windows -> Mac jedoch noch nicht durchgeführt (Mac ist für mich in Sachen Programmierung eher ein unbekanntes Gebiet). Falls es doch nicht geht, entschuldige ich mich für die falsche Info.



  • Als ich vor dieser Entscheidung stand, habe ich mich für wxWidgets entschieden. Bis jetzt kann ich das weiterempfehlen 😉

    Als IDE verwende ich Visual Studio. Die Autovervollständigung ist dort ausgezeichnet, was dir vor allem beim Erlernen einer neuen Bibliothek hilft.
    Dass es nur auf Windows läuft sollte dich nicht besonders stören, da du bei anderen Betriebssystemen nur mehr kompilieren brauchst (Idealfall).

    Als Alternative gibt es noch Eclipse. Obwohl es nicht schlecht ist, hat es mich nicht von VS weggebracht.

    Mein Tipp: unter Windows schreiben mit Visual Studio 2012 Express + wxFormBuilder und dann auf Mac/Linux nur mehr compilieren (oder wie Beefi sagt, Cross-Compilen von Windows aus und hoffen dass es dann wirklich funktioniert 😉 )



  • - Visual Studio ist wirklich eine extrem aufgeblähte IDE

    Aber Code::Blocks nicht? Is gut, ich lach später.

    Zudem lassen sich mit der kostenlosen Expressversion ab einschließlich 2012 nur noch Metro Apps programmieren. Wie das jetzt mit purem C++ aussieht weiß ich gar nicht so wirklich...Windows-Desktop-Anwendungen sind jedenfalls nicht möglich.

    Bullshit. Laber hier doch nicht so nen Müll ins Forum.
    http://www.microsoft.com/visualstudio/deu/products/visual-studio-express-for-windows-desktop



  • Bullshit. Laber hier doch nicht so nen Müll ins Forum.

    Reiß dich halt mal etwas zusammen. Kein normaler erwachsener Mensch redet doch gleich in so einem Ton.

    Hab gerade gesehen, dass Microsoft letzten Sommer anscheinend doch noch umstellte.
    Hier zb Quelle: http://mobil.pcwelt.de/artikel/Visual-Studio-2012-Express-Windows-8-Desktop-Entwicklung-wieder-kostenlos-5928968.html?redirect=1

    Jedenfalls war es so bzw Microsoft wollte es so. Da ich nur noch Visual Studio 2010 nutzte und nach antesten von 2012 umgestiegen bin, hab ich mich nicht weiter darüber informiert. Es war einfach fakt, dass dies unter Visual Studhio 2012 nicht mehr möglich war. Wenn sie es wegen Beschwerden von Hobbyprogrammierern doch schnell noch umgestellt haben, kann ich es ja nicht unbedingt wissen.
    Alle Quellen vor obigem Datum bestätigen jedenfalls dass ich keinen "Bullshit Müll" rede, sondern es Tatsache war und ich einfach nicht mehr auf dem laufenden war.
    Allein das zeigt doch auch schon die Pläne Microsofts und die mögliche Zukunft kommender Expressversionen.

    Ich mach Softwaremaker doch auch nicht wie ein abgestürzter jugendlicher an, warum er nicht jeden Tag nach MinGW als Cross Compiler googlet (also nur als Beispiel).Und vielleicht habe ich ja unrecht und er wird mich ganz normal darauf hinweisen.



  • Erst mal danke für die vielen Tipps.

    Mir ist klar das VS unter Windows sehr stark verbreite ist und soweit mir bekannt auch in der Express Version kommerziell genutzt werden darf. Ich habe aus mehr gefühlten Gründen etwas gegen MS VS, mir sind freie Tools einfach lieber. Außerdem glaube ich eine Sprache besser zu lernen und zu verstehen, soweit ich nicht alles einfach "zusammenklicke" 😃

    Ich habe ein paar kleine Programme in Lazarus geschrieben und finde einfach die Menge an Libraries, welche es für C/C++ gibt ist ein schlagen Argument für die Sprache. Ich habe mich zum Beispiel mit einer Tapianbindung beschäftigt und SNMP. Klar gibt es z.B. Snmp in der Erweiterung von Synapse, aber nur mit Einschränkungen, darum dachte ich mir, mich doch mit der "schnellsten" und wohl auch verbreitetste Sprache C++ zu beschäftigen, weil es dafür fast alles gibt, was wünschbar ist. 😃

    Gibt es keinen der QT hier einsetzt und warum nicht?
    Bei kleinen Konsole Programmen kommt ich ja mit Notepad++ gut hin und mit NppExec ist das kompilieren und Test kein Problem. Sogar die Autovervollständigung ist mit Strg/Space schon eingebaut.

    Warum immer g++ was ist mit Clang? Soweit mir bekannt scheint er ja einer größere Verbreitung anzustreben und Apple hat viel Geld in die Entwicklung gegeben. 🙂



  • Visual Studio ist aus meiner Sicht die beste IDE mit dem mit Abstand besten Debugger. Noch einfacher kann Debugging nicht sein.

    Du kannst doch einfach unter VS entwickeln und dann auf einem Linux-PC mittels gesondertem Makefile deine Linux-Version bauen.

    Wenn du allerdings andererseits das QT-Framework benutzt, brauchst du dir in Sachen Plattformunabhängigkeit keine große Platte mehr machen. Aber die Plattformunabhängigkeit ist ( für mich ) auch nur dann ein Thema, wenn ich Sockets, Threads oder ähnliches Gedöns verwende, weil sich da Linux und Windows dezent unterscheiden.

    Den C und C++ Standard haben sowohl der MS-Compiler als auch der GCC drauf, so dass du durchaus auf VS entwickeln kannst und unter Linux bauen kannst.



  • Und was ist mit dem C++Builder XE3 als StarterEdition?



  • ...



  • Hi kunstlust,

    wenn du auch auf kleine Sachen stehst, dann schau dir mal die IDE "Geany" an http://www.geany.org/.
    Die verwende ich gerne auch für kleine Sachen. Es ist total simpel, schlank und hat trotzdem einige sehr gute Funktionen und Plugins. Es startet in maximal 1 Sekunde 😃 Sogar eine kleine Projektverwaltung. Das darf man natürlich alles nicht mit VS vergleichen, aber es trifft genau deinen Geschmack. Geany ist mit der GTK2 Bibliothek geschrieben...dann siehst du auch mal, wie Windows-Mäßig sogar GTK aussehen kann (oder eben am Beispiel von Gimp).

    Qt nutze ich noch nicht wirklich...bin im Moment eher dabei, mich in die ganzen GUI-Toolkits einzuschnuppern, da es immer Pro und Kontras aller GUI-Toolkits gibt, und ich mir einfach selbst ein Bild machen muss.
    Ich hab nur für mich herausgefunden, dass Qt wohl das langsamste und dickste Toolkit ist, jedoch sehr viel Luxus bietet. FLTK ist wohl das schnellste und leichteste Toolkit und extrem leicht zu lernen. Wenn du erstmal ne Basis willst, überhaupt mal GUIs zu programmieren, hast du hier nach ein paar Tagen schon voll was drauf...es hat auch gewissen Luxus mit dem GUI Builder FLUID. Jedoch ist es nur ein GUI-Toolkit und keine Eierlegende Wollmichsau wie Qt 🙂

    wxWidgets hört man auch oft, dass es schwerer zu lernen sei, als Qt und dass es nicht besonders performant ist...da konnte ich mir aber noch kein Bild machen. Es kommt halt genau darauf an, was du willst. Viele Plattformübergreifende Qt-Dinge kannst du auch mit anderen Plattformübergreifenden Bibliotheken wie zb Boost lösen. Qt soll sich jedoch nicht unbedingt an C++ halten und einige ungewollte Dinge anstellen...MOC usw.



  • Swordfish schrieb:

    kunstlust schrieb:

    [...] QT [...] warum nicht?

    Kommerzielle Lizenz sehr teuer.

    War das nicht so, dass man sich bei dynamischem Linken diesbezüglich keine Sorgen machen muss?



  • Beefi schrieb:

    Hi kunstlust,

    wenn du auch auf kleine Sachen stehst, dann schau dir mal die IDE "Geany" an http://www.geany.org/.

    Unter Linux habe ich das schon am laufen, auch für den FPC 🙂
    Ich schaue mir mal FLTK an, davon hatte ich noch nichts gehört.
    Danke



  • Qt mit kommerzieller Lizenz braucht man normalerweise nicht. Einfach die kostenlose LGPL nutzen und die Qt-DLLs dynamisch linken. Nur wenn man am Qt-Source von digia etwas ändert, dann muss man das offenlegen, ansonsten keine Probleme und auch für kommerzielle Closed-Source-Anwendungen benutzbar.
    Wichtig: Qt ist nicht nur ein sehr gutes GUI-Framework, da ist alles drinnen, was man sonst noch so braucht: Lokalization, XML, JSON, Bildmanipulation, ...
    Da kommt kein anderes Framework heran (am ehesten noch wxWidgets).
    Die IDE von Visual Studio ist zwar sehr gut, nur hat Microsoft kein gutes C++-Framework. Die MFC ist total veraltet und im Gegensatz zu Qt muss man für heute standardmäßige Dinge wie XML,JSON,Bildmanipulation noch externe Bibliotheken nehmen. Bei .NET sollte man gleich C# nehmen (auf keinen Fall C++/CLI).
    Mit dem Qt-Creator bietet Qt auch eine gute IDE, die einen sehr gut integrierten GUI-Editor hat. Das gibt es bei wx in der Form leider nicht. Der besste GUI-Editor für wx ist wxFormbuilder (mein Wissensstand von vor 2 Jahren), das ist aber keine IDE. Freie Platzierung der Controls ohne Layout (z.B. für Tests/Entwurf) kann er auch nicht.



  • War das nicht so, dass man sich bei dynamischem Linken diesbezüglich keine Sorgen machen muss?

    Ja man darf Qt dynamisch linken und sein Produkt kommerziell vertreiben.
    Was viele nicht wissen ist, dass man Qt (kommerziell) sogar statisch linken darf, so lange man die original Bibliotheken dem Käufer/Nutzer verfügbar/zugänglich macht.
    So wurde es jedenfalls im Ubuntuforum (ich glaube dass es dieses Forum war) bestätigt.
    Der ein oder andere wird das hier sicher auch bestätigen können.

    EDIT:

    Nur wenn man am Qt-Source von digia etwas ändert, dann muss man das offenlegen

    Oder das wars 🙂 Es gab jedenfalls sicher ne möglichkeit Qt statisch zu linken und trotzdem kommerziell zu nutzen.

    Achja, und es kann auch Vorteile haben, wenn man Plattformübergreifend programmiert und das Toolkit seine eigene Widgets zeichnet (wie zB Qt, GTK und FLTK). So sind die GUIs wirklich auf jedem System gleich. wxWidgets simuliert da manchmal etwas...wo unter Windows zB MDI Fenster unterstützt werden, werden sie unter Linux nur mit Tabs simuliert.

    EDIT2:
    So jetzt hab ichs. Du darfst das kostenlose Qt statisch linken und kommerziell vertreiben, wenn die Entwickler (Du) sicherstellen, dass der Nutzer Zugriff auf die Quellen der LGPL lizensierten Bibliotheken hat. Das gilt nicht nur für Qt sondern für alle LGPL Software.

    Und man darf Software, die du mit MSVC erstellst nicht statisch linken, da die MS-Runtimes nicht GPL kompatibel sind. Windows Software darfst du also immer nur dynamisch linken. Das stört irgendwie immer niemanden...aber bei anderen Frameworks ist es den Nutzern immer wichtig 😃

    Link zu Quelle 1: http://forum.ubuntuusers.de/topic/qt-vs-gtk-ist-die-qt-portierungvielfalt-gtks-t/#post-4771697
    Link zu Quelle 2: http://www.c-plusplus.net/forum/237114-full
    Der zweite Link ist sogar aus diesem Forum. Scorcher24 schreibt jedoch, dass man LGPL immer nur dynamisch linken darf. Hab jedoch oft schon das Gegenteil gehört, wenn man eben eine gewisse Regel einhält.



  • Was viele nicht wissen ist, dass man Qt (kommerziell) sogar statisch linken darf, so lange man die original Bibliotheken dem Käufer/Nutzer verfügbar/zugänglich macht.

    Nein, da bringst du was durcheinander:
    Qt gibt es mit 3 Lizenzen:
    - GPL: kostenlos, der eigene Programmcode muss aber veröffentlicht werden
    - LGPL: kostenlos, bei dynamischem Linken von Qt muss der eigene Programmcode nicht veröffentlicht werden, nur vorgenommene Änderungen am Qt-Code.
    - kommerziell: kosten (viel) Geld: man kann Qt statisch/dynmaisch linken wie man will, man muss seinen eigenen Code und auch Änderungen am Qt-Code nicht veröffentlichen

    Das Wichtige bei LGPL und dynamisches Linken ist: Nur wenn der eigene Code und der Qt-Code im Binary nicht vermischt werden (das geht mittels dynamischem Linken), dann kann man sein Programm unter eine eigene bieliebige Lizenz stellen (also mit machen was man will). Vermischt man (statisch Linken), dann muss man das eigene Programm unter der LGPL veröffentlichen (also dann den eigenen Code auch offenlegen).



  • Hi Softwaremaker,

    ich glaube wir hatten beide ein wenig unrecht/recht 🙂
    Hier steht nochwas zum statischen Linken der LGPL: https://ssl.schlittermann.de/pipermail/lug-dd/2012-January/083234.html
    Stichwort: Objektdatei

    Unter Wikipedia ( http://de.wikipedia.org/wiki/GNU_Lesser_General_Public_License ) steht dann nochmal alles schön beschrieben, und zwar im ersten Absatz unter "Bedingungen/technische Einhaltung".

    Kurz:
    "Ein Programm, das LGPL-Code zusammen mit eigenem proprietärem Code verwendet, muss so aufgebaut sein, dass jeder Endnutzer den quelloffenen LGPL-Code (oder modifizierte Versionen dessen) in das endgültige Programm (selbstständig) linken kann"
    Weiterhin wird dann beschrieben, dass man den Nutzer dafür also die Objektdatei seines eigenen proprietären Programmes mitliefern muss, damit er das Programm dann nachträglich noch selbst Linken kann.

    Also wenn man eine CD verkauft, muss neben der statisch gelinkten EXE einfach nur noch die Objektdatei des Programms und die Quelldatei der LGPL Bibliothek mit drauf sein. Ob der Nutzer dann Linken kann oder nicht, ist ja egal 🙂


Log in to reply