Ein ganz einfaches GUI-Toolkit?
-
Hallo zusammen,
ich weiß, es ist schrecklich: Ich habe soeben einen weiteren Thread über "welche gui ist die beste?" produziert. Aber ich finde einfach nicht, was ich suche. Ich habe mich bereits mit GTKmm, QT und U++ versucht, aber das gefällt mir alles nicht so recht.
Was ich suche wäre eine Bibliothek, die möglichst simpel gehalten ist, d.h.:
- Ich möchte Sie einfach mit CodeBlocks in mein Projekt einbinden können (keine eigene IDE)
- Einen Fenster-Designer brauche ich nicht.
- Ich möchte modernes C++ benutzen und vor allem auch die STL bzw. Boost für andere Aufgaben als die reine GUI weiterbenutzen können.Wer noch den Nerv hat, solche Fragen zu beantworten und etwas kennt, was in die Richtung läuft, der möge mir einen Tipp geben
Gruß
Wirdbald
P.S.
Mein Compiler ist MinGW,
ich programmiere meist für Windows, es wäre aber schön, wenn der Quellcode auch auf Linux funktioniert.
-
Hmm... was du tun koenntest ist dich mal mit TCL/TK auseinandersetzen. Da muesstest du deinen C++-Code als TCL-Erweiterung einbinden und kannst dann auf deine Funktionen direkt zugreifen. Die Sprache selbst ist leicht zu lernen, allerdings haperts ein bisschen an der Performance, da TCL eigentlich fuer Prototypen gedacht ist.
Hoffe das hilft dir weiter...
-
Hm, nein. Tcl ist ja eine andere Programmiersprache. Das ist genau, was ich nicht will. Dann könnte ich auch Perl benutzen, wo sich mittlerweile sehr komfortabel eine grafische Oberfläche einbinden lässt. Aber ich möchte natives C++ benutzen und nur ein paar zusätzliche Bibliotheken mit einkompilieren. So ungefähr wie das für die Konsole mit der IC gelöst ist...
Was mir bis jetzt nicht gefallen hat war insbesondere:
QT -> Ich werde gezwungen alle Möglichen Klassen und Datentypen zu verwenden, die ich nicht möchte (z.B. die Strings)
GTKmm -> Man muss sich ein komplettes GTK auf den PC laden, weil nicht die Systemschnittstelle direkt, sondern ein anderes GUI-Toolkit gewrappt wird
U++ -> Ich werde dazu gezwungen eine IDE zu benutzen, die mir überhaupt nicht gefällt. Außerdem dauert das Kompilieren von Hello-World ähnlich lange, wie sonst bei einer ziemlich umfangreichen Anwendung. Da frage ich mich: Was wird da bloß alles reinkompiliert?Hat sich noch keiner der zahlreichen GUI-Autoren die Mühe gemacht, ein Packet zu schreiben, das einfach nur die Systemschnittstellen auf leichter brauchbare Klassen überträgt? Ich meine, mittlerweile spiele ich mit dem Gedanken selber einen Wrapper für die entsprechenden WinApi-Elemente zu schreiben. Ließe sich ja später um den Code für das X-Window-System erweitern.
-
ich bin persoenlich mit Qt sehr zufrieden, und bin vor allem ueber den QString sehr erfreut, weil sich der fast so verhaellt wie ich es von java her (musste ich inner Schule lernen) gewohnt bin. ausserdem is der selbstoptimierend, wenn du also 2 QString mit unterschiedlichem Namen erzeugst die den selben Inhalt haben, wird der 2te als Referenz auf den ersten angelegt erst wenn du einen davon aenderst, wird ein objekt fuer den 2ten erzeugt.
ausserdem deckt Qt ja nicht nur GUIs ab, sondern auch Netzwerksachen, XML, DBus (linux), ActiveQt (windows), OpenGL und paar andere sachen.
Am besten finde ich das Signal/Slot-Konzept, mit dem man Aktionen einfachst vernetzen kann ohne wie bei Java (ActionListener) jedesmal zu pruefen, welches Objekt jetzt den listener aktiviert hat.wuerde ich noch java programmieren, wuerde ich meine Oberflaechen mit Qt bauen!
-
Schon mal FLTK angeschaut?
-
FLTK ist wirklich eine gute Idee, das würde ich mir an deiner Stelle mal angucken. Ich schreibe im Moment selber eine GUI-Library für C++, weil ich genau aus den gleichen Gründen wie du mit gtkmm, Qt und U++ unzufrieden war. Dabei wrappe ich allerdings praktisch nur FLTK, weil ich meine Programme unter Windows, Linux und Mac kompilieren können möchte und zu faul/unwissend bin, um alles selber mit der Win-API, der X-Lib und Aqua (oder wie das auf MacOS heißt) zu schreiben. Wenn ich in ein bis zwei Wochen ein erstes kleineres Programm damit geschrieben habe, kann ich ja mal etwas Beispielcode posten. Vielleicht gefällt es dir ja.
Ansonsten würde ich mir FLTK alleine ansehen (vllt. willst du ja auch einen eigenen Wrapper darum bauen), oder als letzte Alternative noch wxWidgets, wobei das allerdings auch relativ "fett" ist.
Felix
-
Ja, das sieht schon recht gut aus. Danke für den Tipp. Werd' ich mir auf jeden Fall mal ansehen.
-
Denke das da sich jeder seine Meinung selbst bilden muss, es gibt keine perfekte GUI Library.
Artchis GUI pro/contra liste kennst du wahrscheinlich schon, wenn nicht, wirf mal einen Blick rein.Meine Sicht auf die gängigsten Libs:
QT
+ imho eine der Besten und Umfangreichsten (GUI) C++ Libs.
- GPL, ich möchte auch "nicht freie" Software entwickeln dürfen, zumal ich auch kommerziell entwickel, da ist QT zu teuer.
- eigener Make prozess, das muss nicht seinGTKmm & GTK
+ GTKmm besitzt ein sehr hübsches Design
+ Für Linux wohl die beste Wahl neben QT
- viel_zu_lange_Methoden_namen
- Kein reines C++, einiges ist über C anzusprechen
- Viele Abhängigkeiten
- Afaik auch GPL, also kommerziell nur bedingt nutzbarwxWidgets
+ Liberale Lizenz
+ "Hässliche" Anteile lassen sich zu fast 100% mit boost/STL ersetzen
+ statisch und dynamisch zu linken
- Einige Teile sind recht hässlich, man ist aber nicht daran gebunden sie zu nutzenFLTK
+ Leichtes und schnelles Toolkit
- Mag nicht die Verwendung von Raw-Pointern in vielen Methoden
-
phlox81 schrieb:
GTKmm & GTK
[...]
- Afaik auch GPL, also kommerziell nur bedingt nutzbarDie stehen unter der LGPL.
-
Hallo!
Ich empfehle dir wxWidgets, der CB-SVN-Build hat soweit ich weiß schon ein RAD-Tool dafür integriert(wxSmith).mfg, Golem