Welche GUI soll ich nehmen?
-
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
-
@fwbp34
Der Vorteil von MFC wäre, dass es alles hat, was Microsoft an GUI Elementen jemals rausgebracht und nicht ersetzt hat. Also auch die Ribbons.
Aber ich habe nicht gefunden, dass noch was darüber hinaus hat. Ist das ein reines Framework? Und gibt es einen Weg da kostenlos legal ranzukommen?@Mechanics
Dann müsste ich Qt kaufen, um ein "vollständiges" Programm zu compilieren?@dot
Ich möchte Programme zu Lernzwecken oder vielleicht mal für die Schule schreiben. Aber dennoch möchte ich C++ benutzen. Komplexe GUIs werden es wohl (fürs Erste) nicht werden. Interop: zwei Sprachen wollte ich erstmal nicht lernen.@dot & mechanics
dot ist für wxWidgets und Mechanics für Qt?
-
fltk
-
Atlan schrieb:
@dot & mechanics
dot ist für wxWidgets und Mechanics für Qt?Wenn es zu Lernzwecken sein soll, wäre ich ehrlich gesagt für die WinAPI...
-
@dot
laut Mechanics ist die sehr kompliziert. Was spräche denn für die WinAPI und im Zuge dessen gegen MFC (was meines Wissens nach dieselbe GUI Funktionalität besitzt) und Qt?@knivil
Wo wie ich das verstanden habe sieht die GUI mit FLTK zwar überall gleich aus, dreht aber auch sein eigenes Ding und rendert alles selbst. Oder liege ich falsch?
-
Atlan schrieb:
@dot
laut Mechanics ist die sehr kompliziert. Was spräche denn für die WinAPI und im Zuge dessen gegen MFC (was meines Wissens nach dieselbe GUI FunktionalitätFür die WinAPI spräche, dass du lernen würdest, wie der Kram im Hintergrund funktioniert.Und Erfahrung mit der System-API ist immer brauchbar. Gegen MFC spricht, dass MFC hoffnungslos veraltet ist, gegen Qt spricht rein prinzipiell nicht viel, aber Qt is halt, was man verwenden würde, wenn man schnell und einfach ein GUI zusammenklicken will und dies wirklich um jeden Preis in C++ geschehen muss; zu lernen gibt es dort wohl nicht viel...
Atlan schrieb:
[...] dreht aber auch sein eigenes Ding und rendert alles selbst. Oder liege ich falsch?
So wie Qt...
-
Sobald eine OpenGL-ES basierte C++ GUI ohne Knebel-Lizenz mit 2D-Bibliothek rauskommt werde ich den ganzen GUI-Scheiß der sich seit Jahren nicht bessert hinter mir lassen.
Ich kann nicht nachvollziehen, wie man die WinAPI als Lehrbeispiel empfehlen kann. Damit man alle möglichen Casts kennenlernt? Oder damit man eben auch mal selber Controls mit archaischen Mitteln auf unbenutzbaren APIs implementiert, weil die API selber praktisch nichts mitbringt?
-
decimad schrieb:
Ich kann nicht nachvollziehen, wie man die WinAPI als Lehrbeispiel empfehlen kann. Damit man alle möglichen Casts kennenlernt? Oder damit man eben auch mal selber Controls mit archaischen Mitteln auf unbenutzbaren APIs implementiert, weil die API selber praktisch nichts mitbringt?
Nope, weil man dort zumindest was nützliches lernen kann. Was lernt man denn schon, wenn man einen Button auf eine Form zieht, insbesondere wenn man das sowieso schon jahrelang in Java gemacht hat? Wenn es um Produktivität ginge, wäre das natürlich was anderes, dann wäre aber C++ sehr wahrscheinlich sowieso die falsche Wahl. Für den selten sinnvollen Fall, dass tatsächlich Anwendungsentwicklung in C++ betrieben werden soll, gibt es dann Qt. Hier ging es aber drum, was zu lernen. Das x-te GUI Toolkit verwenden, wenn man davor eh schon mit anderen Toolkits gearbeitet hat, wird einem kaum was neues lernen. Mit roher WinAPI wird man wenigstens gezwungen, mal selbst GUI Funktionalität zu kapseln, dabei kann man zumindest Programmiererfahrung in C++ sammeln und kommt auch noch mit der System-API in kontakt, was imo sowieso wichtig ist für jeden, der einen tatsächlichen Grund hat C++ zu verwenden...
-
@dot
wie käme ich denn an die WinAPI ran, um damit ein Fenster zu machen und kannst du mir ein gutes Tutorial dafür empfehlen? Ich habe schon ein bisschen geguckt und wurde erschlagen
Es geht mir zwar eher darum eine GUI zu machen und dann die Logik dazu zu entwerfen. Mit der GUI wollte ich mich nicht so lange aufhalten aber sich die WinAPI mal anzusehen wäre bestimmt nicht schädlichvielleicht bleibe ich dann dabei.
@decimad
Ich war schon immer ein großer Freund davon Dinge selber zuschreiben und nicht aus irgendeiner Lib oder API zunehmen. Zur Not könnte ich mir die fehlenden Funktionalitäten aus externen Libs zusammensuchen. Oder ist die WinAPI so unverständlich, dass keiner damit was anfangen kann?