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?
c++
gui
cross-platform
BenjaminB
quelle
quelle
Antworten:
Dies gilt im Allgemeinen nicht für GUI-Bibliotheken, aber der Signal- / Slot-Mechanismus von Qt ist eine ziemlich gute Lösung
Qt und WX bieten beide ziemlich gute Dokumente, sowohl Referenz als auch Tutorial
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.
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
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
quelle
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.
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.
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.
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
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.
quelle
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.
quelle
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?
quelle