Dois-je apprendre GTK+ ou z gtkmm?
Je suis un programmeur C# qui a commencé à utiliser ubuntu en environ 2 ans. Je suis désireux d'apprendre la programmation GUI en C ou C++. Je n'aime pas vraiment mono, il a tendance à planter sur mon système. J'ai une compréhension de base de C++. Je n'ai jamais travaillé en C, mais il a l'air cool. Qui toolkit devrais-je apprendre/utiliser? Donner Pro/Inconvénients de chacun. Merci!
OMG, s'il vous plaît essayer de Qt...
Lequel avez-vous de faire? Pouvez-vous s'il vous plaît recommander sources d'apprentissage sur ces?
Lequel avez-vous de faire? Pouvez-vous s'il vous plaît recommander sources d'apprentissage sur ces?
OriginalL'auteur Kredns | 2009-03-15
Vous devez vous connecter pour publier un commentaire.
Depuis le C++ est plus familier pour vous, vous pouvez trouver z gtkmm pour un meilleur ajustement, puisque vous pouvez utiliser des expressions idiomatiques comme RAII. Malheureusement, z gtkmm est un peu incomplète et manque un peu de moins de pièces d'occasion de GTK.
GTK+ sur son propre, mais essentiellement expose un modèle d'objet similaire à ce que vous trouverez, C++, mais avec seulement C fonctions. Des choses comme la construction et la destruction en C++ sont fait de manière explicite dans l'API C et les instances de widgets sont gérés par l'intermédiaire de pointeurs exclusivement.
Essayer les deux et voir ce qui convient à votre projet de mieux.
OriginalL'auteur greyfade
Je pourrais être accusé de partialité, puisque je ne contribuent à z gtkmm, mais j'ai été un utilisateur de la première, donc... En tout cas, je vous recommande fortement de z gtkmm si vous êtes à l'aise avec le C++. Gestion de la mémoire est beaucoup plus facile avec z gtkmm qu'avec GTK+, car de référence-objets comptés sont gérés automatiquement avec des pointeurs intelligents. Vous pouvez aussi instancier des objets que l'auto variables (par exemple sur la pile), et leurs durée de vie déterminée par leur champ d'application. Donc, dans la pratique, il est beaucoup plus facile d'éviter les fuites de mémoire avec z gtkmm qu'avec GTK+.
Un autre énorme avantage de z gtkmm sur GTK+ (à mon avis) est l'utilisation d'un type-safe signaux cadre. Dans GTK+, vous avez constamment besoin de passer des choses comme nulle pointeurs et puis les jeter autour pour le type que vous pensez qu'ils devraient être. Dans z gtkmm, vous n'avez pas besoin de le faire, et peut profiter de l'compilateur application de type de sécurité sur vos gestionnaires de signaux.
Un autre grand avantage par rapport au C/GTK+, c'est la facilité de dériver de nouvelles classes. Dans GTK+, vous avez besoin d'écrire beaucoup de code réutilisable et, essentiellement ré-implémenter des choses que vous obtenez pour gratuit en C++ dans le cadre de la langue (par exemple, l'héritage, les constructeurs, destructeurs, etc). C'est plus fastidieux et source d'erreurs.
greyfade mentionné que z gtkmm est incomplète, et il a raison dans une certaine mesure -- z gtkmm ne couvre pas tout, absolument tout dans le GTK+ API (bien qu'il en devient terriblement proche). Mais dans la pratique ce n'est pas un problème parce que vous pouvez toujours utiliser le C/GTK+ API directement à partir de votre z gtkmm code. Ce C compatibilité est un énorme avantage du C++ par rapport à quelque chose comme C# ou python bindings où vous auriez pas des solutions de rechange si la liaison n'a pas de couvrir une partie de l'API.
Les seules vraies raisons de choisir GTK+ z gtkmm (OMI) de z gtkmm a un peu de surcharge supplémentaire, car il est un wrapper sur le dessus de la bibliothèque C (mais ce n'est généralement qu'un seul appel de fonction, qui va avoir un impact négligeable), ou si vous n'aimez pas ou ne peut pas utiliser le C++.
OriginalL'auteur jonner
Si vous êtes un programmeur C#, pourquoi ne pas vous prendre un coup d'oeil à Vala?
- Je utiliser pygtk pour la plupart de mes Linux des applications avec interface graphique, mais Python était tout simplement trop lent pour le projet sur lequel je travaille en ce moment, donc j'essayais d'en choisir un de GTK+ et z gtkmm. Puis j'ai rencontré Vala.
C'est une jolie nouvelle langue, et, par conséquent, la documentation est assez limitée pour le moment, mais je pense que c'est le meilleur des deux mondes: la syntaxe C# avec C la vitesse.
OriginalL'auteur Can Berk Güder
Je suggère d'apprendre vala avec 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
OriginalL'auteur plan9assembler
Comme beaucoup l'ont dit, z gtkmm ne vous fournir de bons de gestion de la mémoire, un décompte de références d'objets, etc. Il le fait tomber dans un département, cependant. De la Documentation. L'ensemble de la z gtkmm projet souffre de la "undocumentation" des phénomènes, où la affichées (et republié sur la 3ème sites de tiers) de la documentation est tout simplement une javadoc scan des fichiers d'en-tête.
Voulais juste que vous sachiez ce que vous souhaitez. Par exemple, le Défilement De La Fenêtre est l'un des mieux documentés classes dans z gtkmm.
mm
bibliothèques (gtkmm
,glibmm
) sont écrits dans les en-têtes, mais ce qui y est écrit est généralement générée par la conversion de la documentation des fonctions C dans le GTK+/GLib/etc..c
fichier au moment de l'habillage (bâtiment). Cependant, cela peut être modifié et personnalisé docs écrit, par exemple, lorsque le C docs contiennent beaucoup de C-ismes qui ne se convertit pas bien. Bien sûr, si vous voyez quelque chose qui manque ou est mal converti, puis de correctifs pour lemm
des en-têtes ou la routine qui convertit le C de la documentation serait la bienvenue sur Bugzilla ou la liste de diffusionOriginalL'auteur River Williamson
Avez-vous regardé QT?
Il est joli, C++ de la conception, de la croix-plate-forme et de la LGPL
Qt != KDE Choses qui "ne regardez pas rihgt" sont liés au thème. Essayez de changer l'intervalle Qt thème pour obtenir quelque chose des yeux.
Je suis en désaccord sur le "gentil c++ design". Il violations des macros et obtient de la sorte avec d'autres libs (boost::signal par exemple). Tout comme un commentaire.
C'était le non-standard des extensions C++ Qt utilisée qui m'a poussé vers z gtkmm. Je préfère avoir quelque chose qui n'a pas besoin d'utiliser celles à "travailler".
Vous pouvez simplement
CONFIG += no_keywords
et les interférences avec d'autres bibliothèques, comme boost::signal ou le gnome signaux sont partis...OriginalL'auteur Martin Beckett
Je pense que la meilleure façon de le faire serait d'abord apprendre à z gtkmm! Après vous avez terminé avec les bases de z gtkmm, GTK+ devrait être assez simple à apprendre(à condition que vous savez C et sont à l'aise avec les pointeurs).
Dans le cas où vous ne savez pas C, vous pouvez apprendre rapidement par La lecture du Langage de Programmation C par Dennis Ritchie
Je vous recommande d'apprendre z gtkmm d'abord parce qu'il est spécialement conçu pour le C++, qui est un peu similaire à C#, puisque ce sont deux Orientée Objet, de sorte que z gtkmm sera relativement facile à apprendre d'abord que GTK+.
Après z gtkmm, vous pouvez passer à GTK+
La plupart des entreprises open source l'utilisation de GTK+, plutôt que de z gtkmm, de sorte que GTK+ est mériteraient d'apprendre!
gtkmm
a été la 1ère à la bibliothèque d'interface graphique que j'ai regardé où je n'avais pas immédiatement de recul dans l'perplexe horreur (GTK+ inclus). Le fait que j'ai enseigné moi-même C++11 à l'époque, etgtkmm
fait un effort concerté pour utiliser un langage moderne version (encore une fois, à la différence de GTK+) ajout d'un lot à l'appel. Et oui, comme vous l'avez dit, une fois que j'avais utiliségtkmm
à obtenir une poignée sur la façon GUI modèles de travail et à la nécessité de rapporter quelques petits bugs dans GTK+ 😉 - ce dernier a fait infiniment plus de sens quand je l'ai regardé de nouveau. Maintenant, j'ai presque l'apprécier! 😉OriginalL'auteur kpsfoo