Welche GUI soll ich nehmen?
-
Hallo liebe Community,
ich habe mich schon etwas länger mit GUIs in C++ beschäftigt, bin aber noch zu keinem Ergebnis gekommen.
In Java war es einfach. Da gab es 2,5 Frameworks, nämlich AWT, Swing, welches auf AWT aufbaut und JavaFX.
In C++ ist das leider anders. Da gibt es viele verschiedene Frameworks und alle haben ihre Vor- und Nachteile. Jetzt möchte ich mal eure subjektive Meinung hören, welches ihr am besten findet. Bitte keine Flamewars oder Kritik ohne Hand und Fuß sondern fundierte Meinungen, welches Framework für meine Zwecke das Beste ist.
Ich möchte keine Gigantischen Programme schreiben sondern das Framework sollte nicht allzu kompliziert sein, aber dennoch alles können, was ich auch aus Java kenne. (Bilder anzeigen, malen, Listener, alle Schaltflächen, denen man im täglichen Gebrauch begegnet, etc.)LG Atlan
-
In C++ gibt es nur 2 Stück die man ernst nehmen kann: QT und wxWidgets
-
Ich würde mir ja erstmal die Frage stellen, wieso du eigentlich C++ verwendest, wenn es dir darum geht, GUIs zusammenzuklicken...
-
Subjektive Meinung: Qt. Ganz einfach, weil wir das in der Arbeit benutzen und ich mich daher damit am besten auskenne (und das dann auch privat verwende, weil ich mich schon damit auskenne).
-
@2,5 vs 2
Es gäbe noch die Windows API oder funktioniert die nur mit .NET und/oder C++/CLI?@dot
Es geht mir nicht darum GUIs zusammenzuklicken aber spätestens seit Windows sind Konsolenprogramme einfach überhohlt@Mechanics
Dann steht es jetzt 1 zu 0 für Qt
Habt ihr sofort mit Qt angefangen oder habt ihr erst ein paar Frameworks ausprobiert?@Alle
Hat jemand den direkten Vergleich zwischen zwei oder mehr (wenn es die o.g. Windows API gibt) Frameworks?Ach ja. Bevor ich es vergesse:
Protablität benötige ich nicht. Wäre zwar cool aber meine Programme werden für Windows programmiert werden.
-
Atlan schrieb:
@Mechanics
Dann steht es jetzt 1 zu 0 für Qt
Habt ihr sofort mit Qt angefangen oder habt ihr erst ein paar Frameworks ausprobiert?Unsere Software wird seit rund 20 Jahren entwickelt. Früher wurde ein anderes Framework verwendet, dass es mittlerweile länger nicht mehr gibt. Ich war noch nicht dabei, als die anderen sich für Qt entschieden haben. Ich könnte jetzt selber nicht genau sagen, was ausschlaggebend war, aber wir haben auch sehr viele spezielle Anforderungen, das würde dir auch nicht weiterhelfen. Ein wichtiger Punkt war sicherlich, dass das neue und das alte Framework möglichst ähnlich sein sollten. Hat eh 2-3 Jahre gedauert, alles zu portieren, und als ich angefangen habe, gabs immer noch etliche Sachen, die früher mal funktioniert haben und nach der Portierung nicht mehr.
-
Ok. Dann wird das einen Grund gehabt haben, warum ihr euch für etwas entschieden habt, was so ähnlich ist, wie Qt. Das nach der Portierung viel nicht funktioniert hat, kann ich mir gut vorstellen.
Wenn keiner was dagegen einzuwenden hat, wird es dann wohl Qt werden. Oder ist jemand der Überzeugung, wxWidgets sei besser?
Und was ist mit der WinAPI?
-
Was genau für eine Art von Anwendung möchtest du denn machen?
-
Atlan schrieb:
Oder ist jemand der Überzeugung, wxWidgets sei besser?
Ich würde jetzt auch nicht unbedingt behaupten, dass Qt besser wäre. Ich kenn mich damit gut aus und mir gefällts. Ich bin mir aber ziemlich sicher, dass ich auch mit den anderen Frameworks gut zurechtkommen würde.
Was man gegen Qt vorbringen könnte, wäre das MOC Konzept, das ist kein reines C++ mehr und das mögen einige nicht. Mir/uns ist es aber völlig egal.
-
@dot
Ich möchte Anwendungen zu Lernzwecken schreiben. Vielleicht mal ein Programm für die Schule. Informatik habe ich aber leider nicht. Oder verstehe ich das falsch? Was meinst du denn mit "welche Anwendungen"?@Mechanics
So weit, wie ich das verstanden habe ist das MOC Konzept trotzdem von normalen C++ Compilern lesbar. Oder?
Da ich sowieso keine Ahnung habe, ist mir das egal. Ich möchte nur Code produzieren, der von jedem richtigen C++ Compiler lesbar ist.
-
Das ist ein Zwischenschritt beim Kompilieren. Der erzeugt dann aber wieder normales C++.
-
Also einfach nur ein "Komfortdienst" damit hätte ich keine Probleme. Nach aktuellem Stand würde ich mich dann wohl für Qt entscheiden.
Zwei Fragen bleiben noch offen:
Gibt es jemanden, der etwas handfestes gegen Qt und gleich ein "besseres" Framework parat hat und
Was ist mit der WinAPI?
-
Was wirklich handfestes für oder gegen eins dieser Frameworks wirst du nicht finden. Das ist dann alles mehr oder weniger Geschmackssache und was man grad so braucht. z.B. sind diese üblichen Frameworks ziemlich überladen. Qt ist nicht nur GUI, da gibts XML, Netzwerk usw. Kann man aber eben auch als Vorteil sehen, da sind eben schon paar mehr Sachen dabei, die man gleich benutzen kann, ohne noch mehr Libs zusammenzusuchen.
Von der WinApi würd ich erstmal die Finger lassen. Die ist ziemlich low level und komplex und es ist aufwändig, damit irgendwas auf die Beine zu bekommen, und noch viel aufwändiger, irgendwas ansprechendes. Ich würds mir an deiner Stelle erst anschauen, wenn du es wirklich brauchst.
-
Wenn es noch etwas bedurft hat, um mich für Qt zu entscheiden, so ist es hiermit erbracht.
Ich nehme Qt (es sei denn es kommt doch noch was. Man weiß ja nie.)
Damit ist die WinAPI wohl fürs Erste gestorben.
Ich danke euch allen und insbesondere Mechanics, für eure/seine Hilfe. Ihr habt mir alle sehr geholfen.
EDIT: eine Frage habe ich aber noch: wenn ich mein Programm compiliert habe und auf einen anderen Rechner mitnehme. Muss ich dann irgendwas installiert haben oder wird alles Notwendige um das Programm auszuführen mit in die .exe Datei kopiert?
-
Das kommt drauf an, wie du die benötigten Bibliotheken linkst. Die Open Source Variante von Qt darfst du z.B. nicht statisch reinlinken, d.h., du müsstest die Dlls mitliefern.
-
Atlan schrieb:
Was ist mit der WinAPI?
Das hängt davon ab was du konkret machen willst. Ein Punkt, mal von MOC abgesehen, der mir persönlich an Qt missfällt, ist, dass Qt eben nicht die native Windows GUI verwendet, sondern sein eigenes Süppchen kocht. Ich persönlich würde jedem raten, mal mit der WinAPI zu arbeiten. Wenn du ein komplexeres GUI brauchst, dann ist C++ imo sowieso die falsche Sprache. In dem Fall würde ich eher zu C# raten...
-
Ja, Qt verwendet für die meisten Sachen nicht die native Windows GUI, das ist für mich jetzt auch nichts negatives. Das schaut zumindest sehr nativ aus. Und es gibt eigentlich kaum ein Programm, dass die native Windows GUI verwendet, die meisten Frameworks und Programme zeichnen irgendwas selber.
Ich finde jetzt auch nicht unbedingt, dass man für komplexe GUIs C# braucht. WinForms ist kaum mächtiger als Qt (abgesehen von Data Binding) und WPF wirst du wohl kaum als native Windows GUI bezeichnenUnsere GUI ist sehr komplex und wir kommen wunderbar mit Qt zurecht.
-
Mechanics schrieb:
Ja, Qt verwendet für die meisten Sachen nicht die native Windows GUI, das ist für mich jetzt auch nichts negatives. Das schaut zumindest sehr nativ aus.
Aber es fühlt sich, zumindest imo, nicht zu 100% so an, auch wenn es zugegebenermaßen mitterlweile doch eine sehr gute Approximation liefert. Natürlich stellt sich unweigerlich die Frage: Wieso eine riesige Library mitliefern, die nichts anderes tut, als das Betriebssystem zu imitieren, wenn man auch einfach das Betriebssystem verwenden könnte. Und was, wenn eine neue Version des Betriebssystems irgendwas ändert oder neu einführt, das von der aktuellen Qt-Imitation nicht berücksichtigt wird...
Mechanics schrieb:
Und es gibt eigentlich kaum ein Programm, dass die native Windows GUI verwendet, die meisten Frameworks und Programme zeichnen irgendwas selber.
Da muss ich widersprechen, wxWidgets (wurde ja bereits genannt) oder WTL nutzen afaik z.B. die native GUI.
Mechanics schrieb:
Ich finde jetzt auch nicht unbedingt, dass man für komplexe GUIs C# braucht.
Sag ich auch nicht, es ist allerdings wesentlich einfacher und man wird für Anwendungsentwicklung eher selten wirklich C++ brauchen. Und dann gibt es immer noch Interop...
Mechanics schrieb:
[...] und WPF wirst du wohl kaum als native Windows GUI bezeichnen
Würde ich schon, auf jeden Fall viel eher als Qt...
Mechanics schrieb:
Unsere GUI ist sehr komplex und wir kommen wunderbar mit Qt zurecht.
Das freut mich zu hören; ich sagte ja aber auch nicht, dass ihr eure funktionierende Qt Anwendung spaßhalber nach C# portieren sollt...
-
[hier sollte ursprünglich ein unglaublicher Hass-Kommentar stehen, der schildern sollte, warum Qt bei gleicher Grafik der Win32-API vorzuziehen ist, er fiel der Eigenzensierung zum Opfer]
-
Da Du scheinbar nur Windows im Focus hast würde ich noch die gute alte MFC in die Runde werfen.
Ich bevorzuge sie aus den "gleichen Gründen" wie die anderen QT - ich arbeite damit seit 15 Jahren und kenne sie halt am besten.Gruß Andreas Georg