Frage

Ich bin ein C#-Programmierer und habe vor etwa zwei Jahren angefangen, Ubuntu zu verwenden.Ich möchte GUI-Programmierung in C oder C++ lernen.Ich mag Mono nicht wirklich, es neigt dazu, auf meinem System abzustürzen.Ich habe ein grundlegendes Verständnis von C++.Ich habe noch nie in C gearbeitet, aber es sieht cool aus.Welches Toolkit sollte ich lernen/verwenden?Nennen Sie jeweils die Vor- und Nachteile.Danke!

War es hilfreich?

Lösung

Da C ++ vertrauter Sie ist, können Sie GTKmm finden eine bessere Passform zu sein, da Sie Idiome wie RAII verwenden können. Leider ist GTKmm ein wenig unvollständig und einige der weniger verbreiteten Teile GTK fehlt.

GTK + auf seinem eigenen, jedoch macht im Wesentlichen ein Objektmodell ähnlich das, was Sie in C ++ finden, aber mit nur C-Funktionen. Dinge wie Aufbau und Zerstörung in C ++ ausschließlich getan wird, werden über Zeiger explizit in der C-API und Instanzen von Widgets behandelt.

beide versuchen und sehen, welche passen Ihr Projekt besser.

Andere Tipps

ich beschuldigt Bias werden konnte, da ich gtkmm helfen beitragen, aber ich war ein Benutzer zum ersten Mal, so ... Auf jeden Fall würde ich sehr gtkmm empfehlen, wenn Sie mit C ++ vertraut sind. Die Speicherverwaltung ist viel einfacher, mit gtkmm als mit GTK +, weil Referenz gezählt Objekte automatisch mit intelligenten Zeigern verwaltet werden. Sie können Objekte auch als Auto-Variablen (zum Beispiel auf dem Stack) instanziiert und deren Lebensdauer durch ihren Umfang bestimmt haben. So in der Praxis ist es viel einfacher zu Speicherlecks mit gtkmm zu vermeiden, als mit GTK +.

Ein weiteres großen Vorteil gtkmm über GTK + (meiner Meinung nach) ist die Verwendung eines typsichere Signale Rahmen. In GTK +, müssen Sie ständig Dinge wie void-Zeiger zu übergeben und sie dann denken Sie an die Art umgossen sie sein sollten. In gtkmm, brauchen Sie nicht, dies zu tun, und die Vorteile der Compilers Erzwingen Typsicherheit auf dem Signal-Handler nehmen.

Ein weiterer großer Vorteil gegenüber C / GTK + ist die Leichtigkeit der neuen Klassen abzuleiten. In GTK +, müssen Sie eine Menge von vorformulierten Code schreiben und im Grunde der Dinge neu zu implementieren, die Sie kostenlos in C ++ als Teil der Sprache erhalten (zum Beispiel Vererbung, Konstruktoren, Destruktoren, etc). Das ist mühsam und fehleranfällig ist.

greyfade erwähnt, dass gtkmm unvollständig ist, und er hat Recht zu einem gewissen Grad - gtkmm deckt nicht absolut alles in dem GTK + API (obwohl es schrecklich nahe kommt). Aber in der Praxis ist dies kein Problem, da man immer das C / GTK + API direkt von Ihrem gtkmm Code verwenden kann. Diese C-Kompatibilität ist ein großer Vorteil von C ++ über so etwas wie C # oder Python-Anbindung, wo man keine Alternativen haben würde, wenn die Bindung nicht Teil der API ab.

Die einzigen wirklichen Gründe GTK + über gtkmm zu wählen (IMO) sind, dass gtkmm einen wenig zusätzlichen Aufwand hat, da es ein Wrapper auf der Oberseite der C-Bibliothek ist (aber das ist in der Regel nur ein einziger Funktionsaufruf, die haben wird zu vernachlässigbare Auswirkungen), oder wenn Sie hassen oder nicht C ++ verwenden.

Wenn Sie eine C # Programmierer sind, warum nicht nehmen Sie einen Blick auf Vala

Ich benutze pygtk für die meisten meiner Linux-GUI-Anwendungen, aber Python war einfach zu langsam für das Projekt gerade jetzt arbeite ich an, so dass ich versuchte, einen von GTK + und GTKmm zu holen. Dann traf ich Vala.

Es ist eine ziemlich neue Sprache, und deshalb ist Dokumentation ziemlich im Moment begrenzt, aber ich denke, es ist das Beste aus beiden Welten hat. C # Syntax mit C Geschwindigkeit

Ich würde vorschlagen, es zu lernen vala mit gedit.

http://www.valaide.org/doku.php :vala

https://launchpad.net/valable :Finsternis

http://code.google.com/p/vtg/ :Gedit

http://abderrahim.arablug.org/blog/ :Anjuta

Wie viele gesagt haben, Gtkmm Sie bereitstellt mit einer guten Speicherverwaltung, Referenz gezählt Objekte usw. Es ist in einer Abteilung, obwohl nicht umfallen. Dokumentation. Die Gesamtheit des Gtkmm Projekt leidet unter den „undocumentation“ -Phänomen, wo der entsandte (und Dritten zugänglich gemacht auf 3rd-Party-Sites) Dokumentation ist einfach ein javadoc Scan der Header-Dateien.

Sie wollten nur wissen, was Sie bekommen in würde. Zum Beispiel rel="nofollow"> die einer der besseren dokumentiert Klassen in Gtkmm ist .

Haben Sie bei QT geschaut?
Es ist schön, C ++ Design, Cross-Plattform-und LGPL

Ich denke, der beste Weg, zuerst gtkmm gehen würde lernen! Nachdem Sie sich mit den Grundlagen der gtkmm fertig sind, sollte GTK + ziemlich einfach sein zu erfahren (vorausgesetzt, Sie wissen, C und komfortabel mit Zeigern).

Falls Sie wissen C nicht, man kann es lernen schnell durch die C-Programmiersprache von Dennis Ritchie Lesen

Ich empfehle Ihnen gtkmm zuerst zu lernen, weil es speziell für C ++ entwickelt wird, die C # ist etwas ähnlich, da beide Object Oriented sind, so gtkmm wird relativ einfach zuerst als GTK + zu lernen.

Nach gtkmm können Sie auf GTK + bewegen

Die meisten der Open-Source-Unternehmen nutzen GTK + statt gtkmm, so GTK + lohnenswert ist, zu lernen!

scroll top