GUI Lib nicht in C++, einbinden in C++


  • Administrator

    Grüsse zusammen,

    So langsam verzweifle ich an den C++ GUIs. Im allgemeinen habe ich deutlich länger an der Entwicklung des GUIs als dem eigentlichen Programm und das erscheint mir irgendwie verkehrt.

    Daher meine Frage:
    Gibt es irgendeine GUI Bibliothek, welche auf einer Skriptsprache oder ähnlichem basiert (daher keine oder nur sehr kurze Compilationsphasen braucht), welche ich in eine C++ ausführbare Datei einbinden könnte?
    Irgendetwas womit ich effizient und schnell, für meine Bedürfnisse angepasste User Interfaces, erstellen kann?

    Dinge, welche ich brauche:
    - Druckmöglichkeiten
    - Allgemeine Widgets (Editbox, Button, Combobox, usw.)
    - Tabellen, welche ich möglichst gut anpassen kann (Für alle Zellen: Farbe, Linienrand, Schrift usw.)
    - Platformunabhängig. Muss allerdings nicht unbedingt sein, würde auch Windows reichen. Wäre aber ein Pluspunkt.

    Es muss auch nicht unbedingt gratis sein, sollte aber auch nicht zu teuer sein 😉
    Wäre dankbar für Vorschläge und Ideen.

    Grüssli



  • Hallo, es gibt XUL (s. Gecko-Engine), ansonsten ... es gibt doch für jedes der bekannten Frameworks (WxWidgets, Qt, Gtk+) einen GUI-Designer.



  • wxPython
    wxLua


  • Administrator

    XUL sieht interessant aus, hat aber keine Druckmöglichkeiten und lässt mich auch nichts anpassen, soweit ich das bisher verstanden habe.
    Die GUI-Designer sind auch nicht das was ich suche. Im allgemeinen können die GUI-Designer noch weniger als die GUI-Bibliotheken und ich brauche ja eine Möglichkeit, damit ich zum Beispiel eine Tabelle graphisch anspassen kann.

    wxPython und wxLua sind auch nicht gerade das wahre, vor allem bauen sie auf wxWidgets auf, was ich nicht unbedingt als einen Pluspunkt sehe.
    Allerdings sehe ich grössere Probleme darin, diese mit C++ zu verbinden. Ich kann zwar C++ nach Python raustragen, aber umgekehrt wäre mir neu. Und für Python müsste der User ja irgendein Interpreter-Tool installieren. Oder gibt es da andere Möglichkeiten?

    Im übrigen, gibt es irgendeine Möglichkeit zum Beispiel Swing aus Java in C++ zu nutzen?

    Grüssli



  • Warum benutzt du nicht einfach Qt? Das ist doch eigentlich ein sehr gutes Application Framework. Der Designer ist sehr gut und Printing ist auch da. Übrigens, meistens lohnt es sich Geld in ein Reporting-Tool zu investieren, z.B. Crystal Report oder dieses eine Tool von Combit (Listtool?).

    Swing von C++ aus halte ich für die blödeste Idee (sorry, das ich das so frei raus sage!). Die java-Gemeinde entwickelt SWT und QtJambi um von Swing weg zu kommen, und du willst es von C++ aus nutzen? Und wie soll das Funktionieren? Man müsste ja jede Klasse und Methode auch in C++ anbieten. Sowas implementiert doch niemand.

    Wenn du an jedem GUI-Toolkit was schlechtes suchst, wirst du auch was finden. Und dann wirst du nie mit deiner C++-Anwendung fertig! Man MUSS Kompromisse eingehen!

    Und sowas wie einen Tabellen-Editor kenne ich auch nicht. Selbst in Swing gibts das nicht. Da schreibt man einen Renderer und gut ist. Das muß man dann halt auch in einer C++-Variante machen (z.B. unter Qt oder gtkmm). Kommt mir so vor, als ob du an jedem Toolkit was rumzumäkeln hast. Ist ja nicht deine erste Anfrage, nach sowas, gell?

    Nimm Qt (und zahl notfalls einen Obolus für die Closedsource-Variante) oder gtkmm. Was fehlt (z.B. Reporting) muß man dazu kaufen.



  • Achja, hab mal nen A*** in der Hose und treffe mal langsam aber sicher eine Entscheidung! Ist ja nicht gerade professionell Monatelang sich nicht entscheiden zu können.



  • Dravere schrieb:

    wxPython und wxLua sind auch nicht gerade das wahre, vor allem bauen sie auf wxWidgets auf, was ich nicht unbedingt als einen Pluspunkt sehe.
    Allerdings sehe ich grössere Probleme darin, diese mit C++ zu verbinden. Ich kann zwar C++ nach Python raustragen, aber umgekehrt wäre mir neu. Und für Python müsste der User ja irgendein Interpreter-Tool installieren. Oder gibt es da andere Möglichkeiten?

    Lua funktioniert bei mir in beiden Richtungen C++ <-> Lua <-> C++. Ist keine grosse Sache.

    Ich bin mir sicher, dass es mit Python ebenfalls geht, ich habe es aber wegen der mangelnden Multithreading-Fähigkeit (ja ja, ich weiss, für die Python-Jünger ist der Globale Lock das Beste seit Erfindung des Rades, urgs) schnell wieder verworfen.



  • Dravere schrieb:

    XUL sieht interessant aus, hat aber keine Druckmöglichkeiten und lässt mich auch nichts anpassen, soweit ich das bisher verstanden habe.
    Die GUI-Designer sind auch nicht das was ich suche. Im allgemeinen können die GUI-Designer noch weniger als die GUI-Bibliotheken und ich brauche ja eine Möglichkeit, damit ich zum Beispiel eine Tabelle graphisch anspassen kann.

    wxPython und wxLua sind auch nicht gerade das wahre, vor allem bauen sie auf wxWidgets auf, was ich nicht unbedingt als einen Pluspunkt sehe.
    Allerdings sehe ich grössere Probleme darin, diese mit C++ zu verbinden. Ich kann zwar C++ nach Python raustragen, aber umgekehrt wäre mir neu. Und für Python müsste der User ja irgendein Interpreter-Tool installieren. Oder gibt es da andere Möglichkeiten?

    Im übrigen, gibt es irgendeine Möglichkeit zum Beispiel Swing aus Java in C++ zu nutzen?

    Grüssli

    Python sowie Lua sind beide in C geschrieben und bereits in vielen Projekten integriert - gibt sogar eine Tutorials zu dem Thema im Netz. Für Python und C++ speziell bietet Boost noch Boost.Python an.

    Zum Kompromiss: Jedes, aber auch wirklich jedes GUI-Toolkit/Framework (für C++) ist schlecht. Man muss halt Kompromisse eingehen. Bsp.? wxWidgets wird nativ gezeichnet, gtkmm über Gdk (und somit steht noch ne Schicht dazwischen, die das Gtk-Theming ermöglicht). Gerade wenn man aus Legacy-Gründen Erfahrungen mit der MFC hat, ist die Lernkurve bei wxWidgets relativ niedrig. Es kommt drauf an, was bei *dir* passt.

    Aber wenn du MVC-like alles schön trennst, kannst du die GUI immer noch austauschen 😉

    Du könntest dir das aber auch selbst schreiben - zumindest für die relevanten Dinge (z.B. die von dir erwähten Tabellen). Du lässt sie einfach aus XML-Dateien parsen. Der Rest der GUI kann ja hardcoded sein.


  • Administrator

    @Gröhler,
    Ich denke ich kann dich getrost ignorieren, wenn ich die folgenden zwei Dinge mal ausführe:

    Gröhler schrieb:

    Das ist doch eigentlich ein sehr gutes Application Framework.

    Ich suche ja auch ein Application Framework ...

    Gröhler schrieb:

    Ist ja nicht deine erste Anfrage, nach sowas, gell?

    Ich habe extra noch eine Suche in diesem Forum gemacht. Das ist mein erster Thread in diesem Forum-Bereich. Also um genau zu sein meine erste Anfrage. Daher, TROLL!

    frenki schrieb:

    Lua funktioniert bei mir in beiden Richtungen C++ <-> Lua <-> C++. Ist keine grosse Sache.

    Kannst du mir ein paar Webseiten geben, wo ich entsprechende Informationen finde? Kenne mich ziemlich schlecht aus mit Lua, aber würde es mir gerne mal ansehen.

    Xantus schrieb:

    Zum Kompromiss: Jedes, aber auch wirklich jedes GUI-Toolkit/Framework (für C++) ist schlecht.

    Das finde ich persönlich gerade so schlimm. Es wäre ja noch in Ordnung, wenn es kein perfektes C++ GUI-Toolkit gäbe, das ist ja auch normal, aber ich habe echt das Gefühl, das einfach alle schlecht sind. Nicht einfach ausreichenden oder mit gewissen Mängeln, sondern wirklich schlecht und oft auch völlig veraltet.

    Oft habe ich allerdings auch das Gefühl, dass viele viel mehr wollen als nur ein GUI-Toolkit und am Ende daran scheitern. Grundsätzlich bekommt man nicht nur ein GUI-Toolkit sondern gleich eine neue Sprache. Bestes Beispiel wäre da eigentlich Qt, welche gleich noch einen Präpräprozessor mitreinpacken.

    Xantus schrieb:

    Aber wenn du MVC-like alles schön trennst, kannst du die GUI immer noch austauschen 😉

    Das probiere ich, da ich die Hoffnung habe, dass doch irgendwann einmal etwas sinvolles rauskommt. Allerdings ist das oft sehr schwer, da man mit dem GUI-Toolkit oft eine eigene Sprache bekommt. Eigene Arrays, Eigene Strings, Eigene Typen, Eigene dies, Eigene das und möglichst alles nur von sich. Zwischen den "GUI-Typen" und der eigentlichen C++ Sprache zu kommunizieren, ist manchmal eine echte Herausforderung.

    Aber ich seh es schon. Meine Google-Suche war korrekt. Es gibt nichts sinnvolles auf dem Markt. Werde noch XUL, wxPython und wxLua mir genauer anschauen und in der Zwischenzeit mit wxWidgets (C++) weitermachen.

    Grüssli und Danke.



  • Dravere schrieb:

    Die GUI-Designer sind auch nicht das was ich suche. Im allgemeinen koennen die GUI-Designer noch weniger als die GUI-Bibliotheken und ich brauche ja eine Moeglichkeit, damit ich zum Beispiel eine Tabelle graphisch anspassen kann.

    Qt z.B. unterstuetzt stylesheets, wie man sie von HTML kennt... damit sind sogar Spielereien wie Farbverlaeufe in Tabellen moeglich.

    Zusammen mit Itemdelegates und Models kannst du (entsprechende Einarbeitung und gewissen Aufwand vorausgesetzt) so gut wie alles in der Tabelle so darstellen, wie du es grad haben willst.


Anmelden zum Antworten