Forum: PC-Programmierung Einfache GUI bibliothek gesucht


von Buwe (Gast)


Lesenswert?

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.

von Programmierer (Gast)


Lesenswert?

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.

von Qtler (Gast)


Lesenswert?

Ich werf mal Qt in den Raum

von GTK (Gast)


Lesenswert?

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

von Programmer (Gast)


Lesenswert?

Wenn es nur für Windows sein soll, dann tust du dich am einfachsten wenn 
du einfach die WinAPI nutzt:

https://docs.microsoft.com/en-us/windows/win32/learnwin32/learn-to-program-for-windows

https://riptutorial.com/winapi

von cppbert (Gast)


Lesenswert?

Programmer schrieb:
> Wenn es nur für Windows sein soll, dann tust du dich am
> einfachsten wenn
> du einfach die WinAPI nutzt:
>
> 
https://docs.microsoft.com/en-us/windows/win32/learnwin32/learn-to-program-for-windows
>
> https://riptutorial.com/winapi

Wo wurdest du denn ausgegraben?

von Vincent H. (vinci)


Lesenswert?

imgui dürft in letzter Zeit recht beliebt sein:
https://github.com/ocornut/imgui

von Dennis S. (eltio)


Lesenswert?

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++

Beitrag #6278510 wurde von einem Moderator gelöscht.
von Buwe (Gast)


Lesenswert?

Dann wirds wohl fltk sein. Macht eigentlich keinen schlechten Eindruck. 
Schade, dass SFML keine GUI Elemente hat.

von sid (Gast)


Lesenswert?

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

von Entwiggler (Gast)


Lesenswert?

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.

von Sebastian (Gast)


Lesenswert?

iup

von Alexander D. (abadu)


Lesenswert?

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/

von Dennis S. (eltio)


Lesenswert?

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.

von Oliver S. (oliverso)


Lesenswert?

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

von sid (Gast)


Lesenswert?

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

von sid (Gast)


Lesenswert?

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

von Avonberater a.D. (Gast)


Lesenswert?

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.

von Rolf M. (rmagnus)


Lesenswert?

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.

von jkzu (Gast)


Lesenswert?

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.

von Olaf (Gast)


Lesenswert?

> 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

von sid (Gast)


Lesenswert?

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!)

von Oliver S. (oliverso)


Lesenswert?

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

von Olaf (Gast)


Lesenswert?

> 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

von Olaf (Gast)


Lesenswert?

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

von Johannes S. (Gast)


Lesenswert?

Lvgl hat doch schon selber eine PC Emulation?

von Olaf (Gast)


Lesenswert?

> 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

von Johannes S. (Gast)


Lesenswert?

https://github.com/lvgl/lvgl#quick-start-in-a-simulator
https://github.com/lvgl?q=lv_sim&type=&language=

da gibt es mehrere Varianten. Aber wenn man es in seiner 
Lieblingsumgebung hat, umso besser.

von Yalu X. (yalu) (Moderator)


Lesenswert?

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.

von Dirk (Gast)


Lesenswert?

Ich werfe auch Qt + Qml in den Raum, nachdem es für kleine Firmen nun 
auch erschwinglich ist eine sehr interessante Sache.

von Wolfgang H. (drahtverhau)


Lesenswert?

Warum nicht Winforms, wpf oder Xamarin... Funktioniert auf anhieb

von Dennis S. (eltio)


Lesenswert?

Wolfgang H. schrieb:
> Xamarin
Das funktioniert mit C++?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.