Worauf sollte man bei der Auswahl einer plattformübergreifenden C ++ - GUI-Bibliothek achten?

8

Als lernender C ++ - Programmierer versuche ich, ein GUI-Framework oder eine Bibliothek für meine eigenen Projekte auszuwählen.

Ich habe einige Erfahrungen mit Qt: Es ist sehr einfach, es hat eine sehr gute Dokumentation und bietet viele Tools, aber es scheint einen Großteil der Standardbibliothek zu duplizieren.

Sind alle C ++ - GUI-Bibliotheken so? Worauf sollte ich in einer GUI-Bibliothek achten? Wie bestimme ich, welches bei einem bestimmten Problem am besten geeignet ist? Sollte ich mich auf eine bestimmte Bibliothek konzentrieren, oder lohnt es sich, mehrere davon zu kennen, da sie möglicherweise unterschiedlichen Zwecken dienen?

BenjaminB
quelle

Antworten:

6

Ft: Es ist sehr einfach,

Dies gilt im Allgemeinen nicht für GUI-Bibliotheken, aber der Signal- / Slot-Mechanismus von Qt ist eine ziemlich gute Lösung

es hat eine sehr gute Dokumentation,

Qt und WX bieten beide ziemlich gute Dokumente, sowohl Referenz als auch Tutorial

und bietet viele Werkzeuge,

Qt benötigt Tools, andere Bibliotheken benötigen nichts anderes als den regulären Compiler - insbesondere diejenigen, die Layer vom Typ Sizer verwenden, benötigen nicht einmal einen GUI-Editor.

aber es scheint einen Großteil der Standardbibliothek zu duplizieren.

Dies ist einfach deshalb üblich, weil Sie sich noch vor ein paar Jahren nicht darauf verlassen konnten, dass std lib und die STL auf allen Plattformen vorhanden oder funktionsfähig sind. Dies gilt auch heute noch für mobile Plattformen. Oft MÜSSEN Sie ihre Sammlungsklassen nicht verwenden, oder Sie stellen fest, dass sie mit den STL-Klassen kompatibel sind

Wie bestimme ich, welches bei einem bestimmten Problem am besten geeignet ist? "

Im Allgemeinen benötigen Sie eine GUI-Bibliothek, um entweder Standardprobleme mit Big-App-Desktops oder hoch konfigurierbare Mobil- / Webschnittstellen zu lösen. Oft hat die Gui Lib einen Geschmack für beide, wie Qt und QWT

Martin Beckett
quelle
Das Duplizieren der Standardbibliothek geschieht häufig - einschließlich wxWidgets, obwohl es im IIRC Optionen gibt, jetzt zur Verwendung der Standardbibliothek zu wechseln. Microsoft hat den Standard unter anderem bis zur Version 2003 von Visual Studio nicht ernst genommen.
Steve314
Denken Sie nicht, dass es bis VS2008 völlig richtig war! Es ist ein paar Jahre her, dass ich wx verwendet habe, aber auf Qt sind die Sammlungsklassen jetzt für die STL vollständig umschaltbar. Beide verwenden immer noch ihre eigene String-Klasse - aber wenn man bedenkt, wie schlecht std :: string ist, kann man das verzeihen!
Martin Beckett
Ich bezweifle, dass es auch jetzt noch völlig richtig ist - Perfektion ist ein bisschen viel zu verlangen. VC ++ 2003 schien mir größtenteils in Ordnung zu sein, wenn auch mit einigen Gemeinheiten. Vielleicht ist es eine Perspektive (alles ist besser als Visual C ++ 6).
Steve314
@ Steve314 - es wurde viel besser in vc2008 und jetzt vc2010. Es sieht so aus, als ob das C ++ - Team von stutter msft von "es funktioniert für uns" und "der Sprache eine Funktion hinzufügen, um diese App zu reparieren" zu dem Versuch übergegangen ist, der beste C ++ - Compiler zu sein.
Martin Beckett
4

Sind alle C ++ - GUI-Bibliotheken so?

Versuchen Sie nicht, alles in einen Deskriptor zu packen. Es wird immer Bibliotheken geben, die schlecht oder sogar nicht dokumentiert sind. Sie könnten das Rad 90% der Zeit neu erfinden oder neue bahnbrechende Funktionen bieten.

Worauf sollte ich in einer GUI-Bibliothek achten?

Sie sollten nach einer Bibliothek suchen, die Ihre Anforderungen so effizient wie möglich erfüllt. Mit effizient meine ich eine Kombination aus Code und Leistung. Wenn die Bibliothek an verschleiertes Perl erinnert, möchten Sie sie natürlich nicht für Produktionscode verwenden, selbst wenn sie eine extrem schnelle Ausführung bietet. Umgekehrt möchten Sie nicht etwas extrem Ausführliches, sondern mit einer behinderten Ausführungsgeschwindigkeit.

Wie bestimme ich, welches bei einem bestimmten Problem am besten geeignet ist?

Es gibt nicht immer einen endgültigen Weg, um festzustellen, welches X das beste ist , um Y zu tun . Wenn Sie in Bezug auf Ihr Problem und die von den Bibliotheken angebotenen Lösungen nicht voreingenommene Daten finden, ist dies eine Möglichkeit. Wissen und Erfahrung gehören auch zu den besten Möglichkeiten, um festzustellen, wie eine Lösung Ihren Anforderungen entspricht.

Sollte ich mich auf eine bestimmte Bibliothek konzentrieren, oder lohnt es sich, mehrere davon zu kennen, da sie möglicherweise unterschiedlichen Zwecken dienen?

Das hängt ausschließlich davon ab, was Sie tun und welche Bedürfnisse Sie haben. Wenn Sie an X arbeiten müssen, müssen Sie die beste Bibliothek dafür lernen. Wenn Sie immer nur an einer Sache arbeiten und eine Bibliothek haben, die Ihren Anforderungen entspricht, warum dann? *

* Hinweis: Es tut nie wirklich weh, mehr zu wissen, ich sage nur von einem reinen Standpunkt aus: "Den Job erledigen".


quelle
+1 "Erledige die Arbeit". Sie könnten ein Leben lang nach der bestmöglichen GUI-Bibliothek für Ihr spezielles Projekt suchen, und am Ende würden Sie wahrscheinlich nur eine geringfügig bessere (wenn überhaupt) auswählen, als Sie aus einer ziemlich oberflächlichen Untersuchung der beliebtesten auswählen würden. Persönlich kenne ich genug wxWidgets, so dass ich mich wahrscheinlich nicht darum kümmern werde, etwas anderes zu recherchieren, solange ich steuern kann, welche GUI ich verwende - QT oder GTK können wahrscheinlich genauso behandelt werden, vorausgesetzt, die Verwendung in Windows ist keine große Sache Deal. Wenn überhaupt, bin ich neugierig auf die leichte FLTK-Bibliothek.
Steve314
2

Wie bestimme ich, welches bei einem bestimmten Problem am besten geeignet ist?

Getan Dutzende von GUI - Ports und Cross-Plattform - GUI - Anwendungen seit 1989 habe, habe ich die erste Frage gefunden , müssen Sie immer entscheiden , Look-and-Feel . Auf diese Weise laufen plattformübergreifende GUI-Bibliotheken entlang eines Spektrums.

Überall ein ähnliches Erscheinungsbild

Diese funktionieren am besten, wenn sich Ihre Software an Personen richtet, die häufig die Plattform wechseln müssen und möchten, dass sich ihre Software überall identisch verhält. Dies ist in einigen wissenschaftlichen Anwendungen üblich, in denen Sie möglicherweise eine Linux-Person sind, die ein Mac-Labor besucht, oder jemand Ihnen im Rahmen eines Zuschusses eine Menge Windows-Boxen gibt.

Beispiele für solche Bibliotheken wären Tk und GTK +.

Plattform native Look-and-Feel überall

Diese sind viel besser für kommerzielle Anwendungen und nicht technische Benutzer geeignet, da diese Leute viel mehr an einer vertrauten Benutzeroberfläche interessiert sind. Tatsächlich lehnen sie es wahrscheinlich ab, Software zu verwenden, die kein natives Erscheinungsbild hat.

Beispiele für solche Bibliotheken wären wxWidgets, RealBasic, Cocotron und Qt.


Sobald Sie diese Entscheidung getroffen haben, können Sie Ihre Problemdomäne genauer untersuchen und bestimmen, welches Toolkit am besten zu Ihnen passt.

Bob Murphy
quelle
Ist es nicht möglich, das Look & Feel mit wxWidgets oder Qt ein für alle Mal einzustellen?
BenjaminB
Ich erinnere mich, dass wxWidgets ein Wrapper um das native UI-System der Plattform ist, also denke ich nicht. Ich bin mir bei Qt nicht sicher. Früher haben sie das native Widget-Erscheinungsbild emuliert, sodass Sie es auf die Emulation einer anderen Plattform umstellen können. Aber ich bin mir nicht sicher, was sie jetzt tun. Wie auch immer, meine Erfahrung besteht hauptsächlich in der Entwicklung für den kommerziellen Gebrauch durch nicht technische Kunden, bei denen ein nicht natives Erscheinungsbild eine schlechte Sache ist. Wenn ich zum Beispiel die Tk-basierte Git-GUI starte, finde ich das ein wenig irritierend, weil es falsch aussieht, egal auf welcher Plattform ich mich befinde.
Bob Murphy
Sowohl wx als auch qt verwenden entweder native Widgets oder zeichnen native Widgets, wenn sie nicht vorhanden sind. Beide Support-Themen sehen also nativ aus.
Martin Beckett
2

Unter den technischen Aspekten sollten Sie sich die Lizenzierung genau ansehen. Qt ist nur für nichtkommerzielle Open Source-Entwicklung kostenlos. Wenn Sie es in anderen Bereichen wie Vertragsarbeiten einsetzen, müssen Sie sicherstellen, dass Sie und Ihr Kunde oder Unternehmen es verwenden können und dass die Kosten für alle Beteiligten akzeptabel sind.

edit: Wie Raphael sagt, irre ich mich in Bezug auf Qts Lizenz. Dennoch denke ich, dass dies ein wichtiger Teil des Entscheidungsprozesses für eine GUI-Bibliothek ist, die jemand verwenden möchte, um sicherzustellen, dass er dies auf legale Weise tun kann.

thorsten müller
quelle
Die Lizenz hat sich geändert. Solange Sie die Quelle von Qt nicht ändern, können Sie sie auch in kommerziellen Closed-Source-Anwendungen kostenlos verwenden.
Raphael
1

Neben der technischen Auswahl ist ein weiterer Punkt die Verfügbarkeit von Entwicklern mit Kenntnissen über das ausgewählte Tool für die Lebensdauer des Produkts. Dies sollte ein Haupttreiber bei der Auswahl aller Entwicklungstools in der Geschäftswelt sein. Wenn es nur für Sie ist, dann tun Sie, was Sie wollen. Wenn nicht, halten Sie sich an ein oder mehrere Tools, die Entwickler kennen, wissen wollen und die bekannt sind. Es ist viel einfacher, einen Auftragnehmer oder Mitarbeiter für eine Java / Swing- oder C ++ / QT-App zu gewinnen als eine ADA / -App (füllen Sie hier Ihr ungehörtes GUI-Toolkit aus).

Ist das Toolkit, für das Sie sich entscheiden, für Sie und alle anderen "Karriereförderung", oder wäre es eine Haftung für einen Lebenslauf?

mattnz
quelle
Ich bin nur für mich selbst verantwortlich. Es ist also nur für meine persönlichen Projekte und meinen Lebenslauf!
BenjaminB