Sollte ich GTK + oder GTKMM lernen?

8

Ich bin ein C # -Programmierer, der vor etwa 2 Jahren anfing, ubuntu zu benutzen. Ich möchte GUI-Programmierung in C oder C ++ lernen. Ich mag Mono nicht wirklich, es neigt dazu, auf meinem System zu stürzen. Ich habe ein grundlegendes Verständnis von C ++. Ich habe nie in C gearbeitet, aber es sieht cool aus. Welches Toolkit soll ich lernen / verwenden? Gib Pro / Cons von jedem. Danke!

    
Kredns 15.03.2009, 18:54
quelle

7 Antworten

12

Da Ihnen C ++ vertrauter ist, finden Sie GTKmm möglicherweise besser, da Sie Idiome wie RAII verwenden können. Leider ist GTKmm ein wenig unvollständig und es fehlen einige der weniger genutzten Teile von GTK.

GTK + allein legt jedoch im Wesentlichen ein Objektmodell offen, das dem in C ++ ähnelt, aber nur mit C-Funktionen. Dinge wie Konstruktion und Zerstörung in C ++ werden explizit in der C-API ausgeführt, und Instanzen von Widgets werden ausschließlich über Zeiger gehandhabt.

Probieren Sie beide aus und sehen Sie, welche Ihrem Projekt besser passen.

    
greyfade 15.03.2009, 18:59
quelle
29

Ich könnte der Voreingenommenheit beschuldigt werden, da ich dazu helfe, zu gtkmm beizutragen, aber ich war zuerst Benutzer, also ... In jedem Fall würde ich gtkmm wärmstens empfehlen, wenn Sie sich mit C ++ auskennen. Die Speicherverwaltung ist mit gtkmm viel einfacher als mit GTK +, da Objekte mit Referenzzählung automatisch mit intelligenten Zeigern verwaltet werden. Sie können Objekte auch als automatische Variablen (z. B. auf dem Stapel) instanziieren und ihre Lebensdauer durch ihren Bereich bestimmen lassen. In der Praxis ist es viel einfacher, mit gtkmm Speicherlecks zu vermeiden als mit GTK +.

Ein weiterer großer Vorteil von gtkmm gegenüber GTK + (meiner Meinung nach) ist die Verwendung eines typensicheren Signal-Frameworks. In GTK + müssen Sie ständig Dinge als ungültige Zeiger übergeben und sie dann an den Typ übergeben, von dem Sie denken, dass er es sein sollte. In gtkmm müssen Sie dies nicht tun und können den Vorteil des Compilers nutzen, der Typ-Sicherheit auf Ihren Signalhandlern erzwingt.

Ein weiterer großer Vorteil gegenüber C / GTK + ist die Leichtigkeit, neue Klassen abzuleiten. In GTK + müssen Sie eine Menge Standardcode schreiben und Dinge, die Sie kostenlos in C ++ erhalten, als Teil der Sprache neu implementieren (z. B. Vererbung, Konstruktoren, Destruktoren usw.). Dies ist mühsamer und fehleranfällig.

greyfade hat erwähnt, dass gtkmm unvollständig ist, und bis zu einem gewissen Grad hat er Recht - gtkmm deckt nicht alles in der GTK + API ab (obwohl es furchtbar knapp wird). In der Praxis ist dies jedoch kein Problem, da Sie die C / GTK + API immer direkt aus Ihrem gtkmm-Code verwenden können. Diese C-Kompatibilität ist ein großer Vorteil von C ++ gegenüber etwas wie C # - oder Python-Bindungen, wo Sie keine Alternativen hätten, wenn die Bindung einen Teil der API nicht abdecken würde.

Die einzigen wirklichen Gründe, GTK + über gtkmm (IMO) zu wählen, sind, dass gtkmm ein wenig zusätzlichen Overhead hat, da es ein Wrapper über der C-Bibliothek ist (aber das ist im Allgemeinen nur ein einziger Funktionsaufruf, der es haben wird) vernachlässigbare Auswirkungen), oder wenn Sie C ++ hassen oder nicht verwenden können.

    
jonner 16.03.2009 02:20
quelle
16

Wenn Sie ein C # -Programmierer sind, warum sehen Sie sich nicht Vala an?

Ich benutze pygtk für die meisten meiner Linux-GUI-Anwendungen, aber Python war einfach zu langsam für das Projekt, an dem ich gerade arbeite, also habe ich versucht, eines von GTK + und GTKmm auszuwählen. Dann traf ich Vala.

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

    
Can Berk Güder 16.03.2009 02:34
quelle
4

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

Ссылка : vala

Ссылка : Eclipse

Ссылка : Gedit

Ссылка : anjuta     

plan9assembler 05.04.2009 04:48
quelle
3

Wie viele schon gesagt haben, bietet Gtkmm Ihnen eine gute Speicherverwaltung, Referenzobjekte, usw. Es fällt jedoch in eine Abteilung. Dokumentation. Das gesamte Gtkmm-Projekt leidet unter den "undocumentation" -Phänomenen, bei denen die gepostete (und auf Drittanbieter-Websites reported) Dokumentation einfach ein Javadoc-Scan der Header-Dateien ist.

Ich wollte nur, dass Sie wissen, worauf Sie hinauswollen. Zum Beispiel ist das Scroll-Fenster eine der besser dokumentierten Klassen in Gtkmm.

    
River Williamson 02.11.2011 17:32
quelle
2

Haben Sie QT angeschaut?
Es ist ein schönes C ++ Design, Cross-Plattform und LGPL

    
Martin Beckett 15.03.2009 19:07
quelle
2

Ich denke, der beste Weg wäre, zuerst gtkmm zu lernen! Nachdem Sie mit den Grundlagen von gtkmm fertig sind, sollte GTK + relativ einfach zu erlernen sein (vorausgesetzt, Sie kennen C und sind mit Zeigern vertraut).

Falls Sie C nicht kennen, können Sie es schnell lernen, indem Sie die Programmiersprache C von Dennis Ritchie

lesen

Ich empfehle Ihnen, zuerst gtkmm zu lernen, weil es speziell für C ++ entwickelt wurde, was C # sehr ähnlich ist, da beide objektorientiert sind, so dass gtkmm relativ einfach zu erlernen ist als GTK +.

Nach gtkmm können Sie zu GTK + weitergehen

Die meisten Open-Source-Unternehmen verwenden GTK + statt gtkmm, und GTK + ist es wert zu lernen!

    
kpsfoo 12.12.2010 16:54
quelle

Tags und Links