Seas Leute. Ich bin auf der Suche nach einer Bibliothek mit der man so
einfach wie möglich Fenster mit Buttons, Textfeldern usw. unter Windows
erstellen kann, Sprache soll C++ unterstützt werden.
SFML ist z.B super einfach, bietet aber kein GUI. Bin auf eure Antworten
gespannt.
C++ und einfach passt nicht zusammen. GUI Frameworks für eine komplexe
Sprache sind auch komplex. Wenn es einfach sein soll, Java + Swing oder
C# + .net oder Python + Tkinter.
Gibt auch noch GTK. Finde ich persönlich einfacher als Qt, aber das mag
subjektiv sein. Weiss aber nicht inwiefern noch Bibliotheken unter
Windows für das Verwenden von GTK noch installiert werden müssen
GTK+ ist sicherlich weit verbreitet, daneben dann noch FLTK und
WxWidgets. Ich persönlich finde die von der Schwierigkeit ja alle
gleich etwa. Schreib die drei jeweils auf einen Zettel und ziehe blind.
Die Suche nach der "perfekten" Bibliothek wird kein Ende haben und dein
Projekt wird nicht anfangen...
https://de.wikipedia.org/wiki/Liste_von_GUI-Bibliotheken#C++
ich bin kein fan von QT um ehrlich zu sein.. meistens sind die Resultate
mir mangelhaft (ich sag nur avira)
Ebenso kein Fan bin ich von ultimate++ ( ultimatepp.org )
Es ist nichteinmal ne Bibliothek sondern eine vollständige
Programmierumgebung mit compiler und vordefinierten Bibliotheken und
editor und und und...
aaaaber es ist ziemlich nah an Einfach c++ und es kommt mit nem GUI
Editor der zumindest ordentlich ist.
Ausserdem kostet es nix und kann als portable App genutzt werden
Ich würde es also dennoch in den Raum werfen wollen als
"kann man mal ausprobieren"
Ich gestehe für wirklich kleinkramigen kleinkram zum Hausgebrauch nutze
ich das sogar selbst, obschon ich gerne und viel drüber schimpfe :D
Eben weil der GUI Editor recht komplett ist und ich schnell ne
brauchbare GUI hinspucken kann ohne mir auch nur Ansatzweise Mühe zu
geben
(wie gesagt: Hausgebrauch)
'sid
sid schrieb:> ich bin kein fan von QT um ehrlich zu sein.. meistens sind die Resultate> [von?] mir mangelhaft (ich sag nur avira)
Du hast die Avira-Oberfläche verbrochen? Ohje.
Aber schlechte Oberflächen kann man mit jedem Framework bauen, das
hättest du sicher auch mit WinForms genausoschlimm hinbekommen.
Aber die Frage bezog sich ja auf "So einfach wie möglich" und nicht auf
"verhindert schlechte Designs"... Da sind Frameworks mit einem
GUI-Editor schon im Vorteil, also Glade, QT-Designer,
Windows-Forms-Designer usw.
Buwe schrieb:> Fenster mit Buttons, Textfeldern
klickt man dann einfach zusammen.
In einigen Projekten habe ich schon Win32++ zum Erstellen der
Benutzeroberfläche verwendet. Win32++ enthält etliche Beispielprogramme.
http://win32-framework.sourceforge.net/
Dann gibt es noch WxWidgets, was den Vorteil hat, dass man ein Programm
auch für Linux übersetzen kann
http://www.wxwidgets.org/
sid schrieb:> ich bin kein fan von QT um ehrlich zu sein.. meistens sind die Resultate> mir mangelhaft (ich sag nur avira)
Ich bin kein Fan von Druckerzeugnissen um ehrlich zu sein.. meistens
sind die Resultate mangelhaft (ich sag nur Bild)
SCNR.
es gibt keine "einfachen" GUI-Framworks. Weder Qt noch U++, noch WinAPI
sind "einfach", da man bei allen in die Konzepte und deren Logik
einarbeiten muß, und die sind nunmal komplex.
Eigentlich wäre C# das Mittel der Wahl, ist aber halt kein C++
Oliver
Entwiggler schrieb:> Du hast die Avira-Oberfläche verbrochen? Ohje
Ne "mir mangelhaft" steht da nix von "für mich"..
aber schön zu wissen, dass Du die auch scheisse findest.
Das Design ist mir übrigens egal.. den cleanen look find ich
nichtmalschlimm,
dass sie 2GB Ram frisst ohne grund find ich kagge;
das ist unter aller Sau!
'sid
Dennis S. schrieb:> Ich bin kein Fan von Druckerzeugnissen um ehrlich zu sein.. meistens> sind die Resultate mangelhaft (ich sag nur Bild)
LOOOL Touché!
Aber es gibt da mehrerer Beispiele für grauenhafte performance der GUI
dank Qt..
mir fiel nur garad kein Zweites ein dass so weit verbreitet ist wie
Avira.
'sid
WinForms, vom Marktführer. In der IDE vom Marktführer direkt
unterstützt, da braucht es keine rangemurksten Schrott von Dritten wie
Qt, Fltkack und den ganzen anderen Schrott aus den 90ern. Da bekommt man
dann auch keinen Kotzanfall wenn man das Programm sieht oder muss 500MB
Runtime mitinstallieren.
Avonberater a.D. schrieb:> WinForms, vom Marktführer.
Könntest du die Liste mit den Marktanteilen bei GUI-Frameworks grad mal
posten? Wäre recht interessant.
> In der IDE vom Marktführer direkt unterstützt, da braucht es keine> rangemurksten Schrott von Dritten wie Qt, Fltkack und den ganzen anderen> Schrott aus den 90ern.
Man merkt, dass du nicht viel Ahnung von modernen GUI-Frameworks hast.
> Da bekommt man dann auch keinen Kotzanfall wenn man das Programm sieht oder> muss 500MB Runtime mitinstallieren.
Aber auch nur, wenn die 5 GB an Runtime schon vorher in genau der
benötigten Version installiert worden sind.
sid schrieb:> Aber es gibt da mehrerer Beispiele für grauenhafte performance der GUI> dank Qt..
Das Performance-Thema hat wohl kaum etwas mit Qt zutun sondern damit,
was da im Hintergrund gemacht wird.
Avonberater a.D. schrieb:> muss 500MB> Runtime mitinstallieren.
Qt5 ist modular und die Größe der Libs zum Ausführen sind weit da
drunter.
Rolf M. schrieb:>> In der IDE vom Marktführer direkt unterstützt, da braucht es keine>> rangemurksten Schrott von Dritten wie Qt, Fltkack und den ganzen anderen>> Schrott aus den 90ern.> Man merkt, dass du nicht viel Ahnung von modernen GUI-Frameworks hast.
Da hast du Recht.
> Das Performance-Thema hat wohl kaum etwas mit Qt zutun sondern damit,> was da im Hintergrund gemacht wird.
Naja, Qt ist nicht nur eine Grafikbibliothek sondern auch eine RIESIGE
Klassenbibliothek/Library. Man muss sich ja nur mal anschauen was man
alles mit QString machen kann. Diese Bibliotheken sind nicht nur alle
zufaellig dabei, sie werden auch von Qt selber genutzt. Man muss sich
also auch damit auseinandersetzen ob einen das gefaellt oder nicht. Das
ist natuerlich toll und macht vieles einfach wenn man es kann, aber zu
Anfang ist das schon ein grosser Berg den man lernen muss.
Das Problem ist IMHO das die Entwickler dieser Systeme immer vergessen
das es auch Leute gibt die ihre Anwendung nicht 40h/Woche nutzen sondern
nur ab und an mal eine Kleinigkeit machen wollen.
Trotzdem bin ich aber der Meinung das sich der nicht unerhebliche
Lernaufwand gerade bei Qt lohnt weil man dieses Wissen auf jedem System
nutzen kann. (Win, Mac, Android, Symbian, Embedded)
Olaf
jkzu schrieb:> Das Performance-Thema hat wohl kaum etwas mit Qt zutun sondern damit,> was da im Hintergrund gemacht wird.
Naja das wär schön.. aber NULL wird im Hintergrund gemacht bei meiner
HassGUI von Avira.. absolut exakt genau garnix!
(drei threads, nahe NULL CPU last [0.7-1.3%], wahnwitzige Speicherlast)
Nur dieser schitt "clean" StartGui mit den paar Buttons
Wenn ich diese scheiss QT clean-gui hinter mir habe wird etwas gemacht
und das ganze wird deutlichst performanter. (weit weniger Speicherlast,
deutlich höhere CPU Last) Einstellungen ändern, Quarantäne säubern
etc...
alles läuft wunderbar, die GUIs da sind altertümlicher aber
funktionieren tadellos.. das weisse startding ist schlicht scheisse!
Ich halte die Jungs von Avira generell eher für begabt,
ich würde soweit gehen zu sagen "leicht überdurchschnittlich begabt"
sogar.
aber das Ding ist eine absolute ZUMUTUNG
(meine Karre hat 16 Zylinder und 96GB Hubraum es sollte ihr also möglich
sein
ne verkaggte Antivirus Start GUI über den Monitor zu ziehen)
Aber da bin ich schneller durch n Olympischen Pool mit Honig
geschwommen.
Glücklicherweise muss man ja nur alle 400 Jahre mal die Einstellungen
ändern sonst wär ich auch echt schon ramdösig geworden von dem scheiss.
Und ja ich fürchte es liegt an Qt,
denn ich hab aus diesem Grund schon mehr Software deinstalliert als mir
lieb gewesen wäre, und immer war Qt im Spiel.
Avira ist leider für mich immernoch Alternativlos, deswegen bleibt's
halt.
Man war das schön als QT noch QuickTime bedeutet hat und mein einziges
Problem war den blöden Appple Player daran zu hindern sich in den
Browser reinzuzecken.
'sid
PS auf meiner alten Kiste läuft auch Avira (alte version ohne Qt..
single core cpu 2GB ram.. anklicken aufpoppen, weiterklicken.. flüssig
wie's soll.. alles tutti!)
sid schrieb:> Avira ist leider für mich immernoch Alternativlos, deswegen bleibt's> halt.
Tja, das ist jetzt eher dein persönliches Pech, und daß du nur diese
eine Anwendung kennst, die auf Qt basiert, dein persönliches Unwissen.
Ist dem Rest der Welt aber vermutlich völlig egal.
Oliver
> Ist dem Rest der Welt aber vermutlich völlig egal.
Liest sich auch ziemlich wirr was er da schreibt. Vielleicht ist er
auch einfach ueberfordert.
Olaf
Falls ihr mal was perverses machen wollt:
Ich hab letztens mal lvgl in Qt implementiert. Meine Intention dabei war
einen komplexen Sourcecode der auf einem Mikrocontroller laeuft ein
wenig komfortabler im Creator zu debuggen. Aber natuerlich koennte man
mit sowas auch sehr einfach Grafikanwendungen schreiben die nur sehr
wenig koennen und wo man wenig lernen muss. Als Bonus hat man dann die
Moeglichkeit sein Programm hinterher einfach auf einem Mikrocontroller
laufen zu lassen. Positiv ueberrascht hat mich lvgl dahingehend das es
sich wirklich einfach so ohne Probleme auf und fuer den PC uebersetzen
liess!
Nur mal so als Idee was geht. :-)
Olaf
> Lvgl hat doch schon selber eine PC Emulation?
Davon hab ich im Source nix gesehen. Es werden ja im Prinzip nur zwei
Routinen aufgerufen welche Pixel ausgeben. Die hab ich in Qt geschrieben
und von da an macht dann bei mir lvgl alles alleine.
Olaf
Vincent H. schrieb:> imgui dürft in letzter Zeit recht beliebt sein:> https://github.com/ocornut/imgui
Ich habe das mal ausprobiert und bin begeistert. Danke für den Tipp!
Das Ding ist genauso genial wie banal: Jede Widget-Instanz ist ein
einfacher Funktionsaufruf, und das war's auch schon :)
In klassischen GUI-Bibliotheken muss man pro Widget i.Allg. folgendes
tun:
- das Widget instanziieren
- das Widget registrieren (ok, geht oft auch automatisch bei der
Instanziierung)
- eine Callback-Funktion für das Auslesen des Widget-Status bei
Änderungen durch den Benutzer schreiben und registrieren
- zum Beschreiben des Widget-Status eine Memberfunktion aufrufen
Bei Dear ImGui geht das alles tatsächlich in einem einzigen
Funktionsaufruf. Entsprechend kurz und knackig wird der damit
geschriebene GUI-Code. Es gibt keine Objekte (im Sinne der OOP), keine
Callbacks und keine Events, weswegen der Einarbeitungsaufwand selbst für
jemanden, der diese Begriffe noch nie gehört hat, sehr gering ist.
Gemessen an der Vielzahl an implementierten Widget-Typen ist die
Bibliothek sehr klein, sie umfasst gerade mal 700 KB. Damit wird sie
üblicherweise nicht auf dem Zielsystem installiert, sondern einfach
statisch gelinkt.
Dear Imgui kann auf praktisch jedem Gerät benutzt werden, das OpenGL,
Vulkan, DirectX oder Metal unterstützt. Auch Webbrowser-Anwendungen sind
mittels Emscripten möglich. Hier ist eine Demo, die die meisten der
implementierten Features zeigt:
http://www.dearimgui.org/webdemo/master/example_emscripten.html
Diese Anwendung, nativ auf einem PC kompiliert und statisch gelinkt, ist
gerade mal 850 KB groß.
Ich dachte immer, GUI-Programmierung sei die Domäne für die OOP. Hier
wird aber gezeigt, dass es rein prozedural sogar noch einfacher und
übersichtlicher geht. Bisher scheint dieser so genannte "Immediate Mode"
vor allem in der Spieleentwicklung Anwendung zu finden. Ich bin mal
gespannt, ob er künftig auch für "gewöhnliche" Anwendungen eine größere
Rolle spielen wird.
Die Bibliothek hat natürlich auch ihre Nachteile und Einschränkungen,
aber für mich persönlich sind diese wenig relevant. Zudem lassen sich
einige davon mit geringem Aufwand umgehen.