GUI-Toolkits welches?



  • 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 🙂


  • Mod

    Würde ganz klar zu Qt5 raten.

    Qt hat sehr gute Apis was auch über die UI hinausgeht.
    Moc ist zwar unschön, aber als Frontend API ist Qt finde ich unschlagbar.
    QtCreator ist auch eine sehr nette IDE, und mit QML kann man auch für Mobile Devices entwickeln.
    Mit Qt5.2 kommt Android Unterstützung diesen Herbst.

    Was wxWidgets angeht, wx3.0 ist immer noch nicht da. wx2.9.5 sollte auch letzten Herbst schon heraus kommen, für mich ist wxWidgets mittlerweile eigentlich auch relativ veraltet, Qt hat sich dagegen weiter entwickelt, das vermisse ich etwas bei wxWidgets.



  • Inwiefern ist wxWidgets veraltet?
    Es gab viele Neuerungen die letzen Jahre, speziell aber halt im Backend.
    Wie STL Support und andere Dinge.


  • Mod

    Scorcher24 schrieb:

    Inwiefern ist wxWidgets veraltet?
    Es gab viele Neuerungen die letzen Jahre, speziell aber halt im Backend.
    Wie STL Support und andere Dinge.

    Und die währen?
    Im Vergleich mit Qt finde ich es einfach veraltet.
    Sicher, für reines UI noch ok, aber bietet z.B. wxWidgets C++11 Unterstützung wie Qt5?



  • wxWidgets zu verwenden hat schon seine Berechtigung:
    - natives UI (Qt nur natives Aussehen aber kein natives Verhalten)
    - es gibt "nur" kostenlos, statisches Linken auch bei Closed-Source
    - kleinere Binary-Dateigrößen als Qt, ist aber heute nicht mehr so bedeutend

    Mit MFC würde ich heute keine Projekte mehr beginnen. Wenn man bei Windows bleibt und mit .NET keine Probleme hat, dann C#.
    Ich nehme Qt. wenn Qt nicht passt, dann wxWidgets, MFC nur für ganz einfache Sachen/Tests.



  • Hallo zusammen,

    ich hätte noch eine Frage zur GUI-Programmmierung.
    Ich hoffe es ist in Ordnung wenn ich die Frage hier rein werfe.
    Ich möchte dafür nicht extra ein Thread erstellen als unregistrierter User.

    Mich würde interessieren, wie man GUIs programmiert, die ein völlig eigenes Aussehen haben.
    Wie beispielsweise Norton Internet Security oder Avast.

    Würde mich sehr über Antworten freuen.

    Gruß
    Stephan



  • Einige Frameworks unterstützen Skinning direkt bei anderen muss man die Elemente (Buttons, Scrollbar, ...) dann halt selber zeichnen (also die Zeichenroutinen selbst programmieren).
    Bei Qt kann man einiges ganz einfach mittels StyleSheets realisieren. Und für ganz "moderne" Oberflächen mit Animation etc. lohnt es sich mal QtQuick anzuschauen.



  • Okay, also man nennt das Skinning? Dann bedanke ich mich vielmals für deine schnelle Antwort. Mit Qt habe ich bisher noch nie was gemacht. C++ bin ich noch dabei zu lernen. Habe schon etwas Erfahrung mit Gtk+ und C. Aber auch nicht wirklich viel. Wäre Skinning auch beispielsweise mit Gtk+ möglich?


Anmelden zum Antworten