Sollte ich lernen, GTK+ oder GTKMM?
Ich bin ein C# - Programmierer, die Schritte mit ubuntu vor etwa 2 Jahren. Ich will lernen, GUI-Programmierung in C oder C++. Ich weiß nicht wirklich, wie mono -, neigt es zu Abstürzen auf meinem system. Ich habe ein grundlegendes Verständnis von C++. Ich war noch nie in C, aber es sieht cool aus. Welches toolkit soll ich lernen/verwenden? Geben Sie die Pro/Cons der einzelnen. Danke!
- OMG, bitte versuchen Sie, Qt...
- Welche hast du am Ende dabei? Können Sie bitte empfehlen lernquellen, die auf diese?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Seit C++, die Ihnen vertrauter sind, können Sie finden, GTKmm, um eine bessere Passform, da kann man Redewendungen wie RAII. Leider GTKmm ist ein wenig unvollständig und fehlen ein paar der weniger gebrauchte Teile, die von GTK.
GTK+ auf seine eigene, jedoch im wesentlichen stellt ein Objekt-Modell ähnlich zu dem, was Sie finden in C++, aber mit nur C-Funktionen. Dinge wie Aufbau und Zerstörung in C++ explizit gemacht in der C-API und Instanzen von widgets geschieht über Zeiger ausschließlich.
Versuchen Sie beide und sehen, welche passt Ihr Projekt besser.
Ich könnte der Vorwurf der Befangenheit, da ich nicht helfen, dazu beitragen zu gtkmm, aber ich war ein Benutzer das erste mal, so... In jedem Fall würde ich empfehlen, gtkmm, wenn Sie sind komfortabel mit C++. Speicher-management ist viel einfacher, mit gtkmm als mit GTK+, da Referenz-gezählten Objekte werden automatisch verwaltet, mit smart Pointer. Sie können auch Objekte instanziieren, die als automatische Variablen (z.B. auf dem stack), und Ihre Lebensdauer bestimmt durch Ihren Umfang. Also in der Praxis ist es viel einfacher, um Speicherverluste zu vermeiden, mit gtkmm als mit GTK+.
Anderen riesige Vorteil von gtkmm über GTK+ (meiner Meinung nach) ist die Verwendung eines Typ-sichere Signale Rahmen. In GTK+, die Sie ständig brauchen, um passieren Dinge, die als void-Zeiger, und dann warf Sie herum, um die Art, die Sie denken, Sie sollten. In gtkmm, die Sie nicht brauchen, um dies zu tun, und können die Vorteile der compiler die Durchsetzung der Typ-Sicherheit auf Ihrem signal-Handler.
Weiteren großen Vorteil gegenüber C/GTK+ ist die Leichtigkeit, der neue Klassen ableiten. In GTK+, die Sie schreiben müssen, eine Menge boilerplate-code, und im Grunde re-implementieren Sie die Dinge, die Sie kostenlos erhalten, in C++ als Teil der Sprache (z.B. Vererbung, Konstruktoren, Destruktoren, etc). Dies ist mehr mühsam und fehleranfällig.
greyfade erwähnt, dass gtkmm ist unvollständig, und er hat Recht bis zu einem gewissen Umfang -- gtkmm nicht für absolut alles in der GTK+ - API (obwohl es wird schrecklich nah). Aber in der Praxis ist dies kein problem, da können Sie immer die C/GTK+ - API direkt von Ihrem gtkmm code. Diese C-Kompatibilität ist ein großer Vorteil von C++ über so etwas wie C# oder python-bindings, wo man hätte keine alternativen, wenn die Bindung nicht abdecken Bestandteil der API.
Die einzige wirkliche Gründe für die Wahl von GTK+ über gtkmm (IMO) sind, dass gtkmm hat ein wenig zusätzlichen Aufwand, da es ist ein wrapper auf der Oberseite des C-Bibliothek (aber dies ist im Allgemeinen nur eine einzelne Funktion aufrufen, die gehen, haben vernachlässigbare Auswirkungen), oder wenn Sie hassen oder nicht verwenden können C++.
Wenn Sie ein C# - Programmierer, warum nimmst du nicht einen Blick auf Vala?
Benutze ich pygtk für die meisten meiner Linux-GUI-Anwendungen, aber Python war einfach zu langsam für das Projekt ich bin jetzt arbeiten, also habe ich versucht ein pick von GTK+ und GTKmm. Dann traf ich Vala.
Es ist eine ziemlich neue Sprache und damit die Dokumentation ist ziemlich begrenzt im moment, aber ich denke, es hat das beste aus beiden Welten: die C# - syntax mit C-Geschwindigkeit.
Ich würde vorschlagen, zu lernen, vala mit gedit.
http://www.valaide.org/doku.php : vala
https://launchpad.net/valable : Eclipse
http://code.google.com/p/vtg/ : Gedit
http://abderrahim.arablug.org/blog/ : anjuta
Wie viele gesagt haben, Gtkmm bietet Sie mit guter Speicherverwaltung, referenzgezählte Objekte, etc. Es fällt nach unten in eine Abteilung, obwohl. Dokumentation. Die Gesamtheit der Gtkmm-Projekt leidet unter dem "undocumentation" Phänomene, wo das geschrieben (und umgebucht auf 3rd-party-Websites) Dokumentation ist einfach ein javadoc-scan der header-Dateien.
Wollte Sie nur wissen, was man sich einläßt. Zum Beispiel, die Gescrolltem Fenster ist eines der besser dokumentierten Klassen in Gtkmm.
mm
Bibliotheken (gtkmm
,glibmm
) geschrieben sind, in die Header, aber was geschrieben ist, ist es in der Regel erzeugt durch die Umwandlung des docs aus der C-Funktionen in GTK+/GLib/etc..c
Datei an der Stelle der Umhüllung (Gebäude). Dies kann jedoch überschrieben werden, und benutzerdefinierte docs geschrieben, zum Beispiel, wenn die C-docs enthält eine Menge von C-Ismen, die nicht gut zu konvertieren. Natürlich, wenn Sie sehen, was fehlt oder schlecht konvertiert, dann die patches entweder diemm
Header oder die routine, die konvertiert aus der C-Dokumentation willkommen sein würde, auf Bugzilla oder der mailing-ListeHaben Sie sah auf der QT?
Es ist schön, C++, design, cross-Plattform-und LGPL -
CONFIG += no_keywords
und die Interferenzen mit anderen Bibliotheken wie boost::signals oder der gnome-Signale sind Weg...Ich denke, der beste Weg zu gehen wäre, zuerst zu lernen, gtkmm! Nachdem Sie fertig sind mit den Grundlagen der gtkmm GTK+ Recht einfach sein, zu lernen(vorausgesetzt, Sie wissen, C und bequem mit Zeiger).
In Fall, dass Sie nicht wissen, C, können Sie lernen, es schnell durch Lesen Der Programmiersprache C durch Dennis Ritchie
Empfehle ich Sie zu lernen, gtkmm, weil es ist speziell für C++, ähnlich zu C#, da sind beide Objekt Orientiert, so gtkmm relativ einfach zu lernen, zunächst als GTK+.
Nach gtkmm, Sie bewegen sich auf GTK+
Sich die meisten der open-source-Unternehmen die Verwendung von GTK+ eher als gtkmm, so dass GTK+ ist, lohnt sich zu lernen!
gtkmm
war das 1. GUI-Bibliothek, die ich sah, wo ich nicht sofort Rückstoß verblüfft horror (GTK+ enthalten). Die Tatsache, dass ich mich selbst unterrichtend C++11 zu der Zeit, undgtkmm
macht eine konzertierte Anstrengung, um die Verwendung einer modernen Sprache version (wieder im Gegensatz zu GTK+) Hinzugefügt, die viel zur Attraktivität. Und ja, wie Sie sagte, einmal würde ichgtkmm
den Griff zu bekommen, wie GUI-Modelle, Arbeit - und wegen der Notwendigkeit der Berichterstattung ein paar kleine bugs in GTK+ 😉 - letzteres machte unendlich viel mehr Sinn, als sah ich es wieder. Nun, fast hätte ich es zu schätzen wissen! 😉