Je cherche à pouvoir construire des applications d'interface graphique rapidement et sans douleur que possible. Je suis compétent (mais pas expert et ne pas avoir d'entraînement formel) en C ++, mais n'a jamais utilisé une boîte à outils ou un cadre de bâtiment d'interface graphique. Je ne suis pas un programmeur professionnel et je suis totalement inexpérimenté et ignorant lorsqu'il s'agit de construire des applications d'interface graphique. Ont passé des heures à rechercher d'essayer de comprendre quoi faire; seulement devenir plus confus et découragé cependant. P>
qt et wxwidgets semblent être les options les plus populaires pour les applications multiples plateformes, bien que la plate-forme inter-plate-forme ne soit pas nécessairement tout ce qui est important pour moi; Windows n'est bien que bien si cela signifie la courbe d'apprentissage la plus rapide. P>
QT semble cool et que le créateur Qt est doux à la recherche de beaucoup de bonnes démos, sauf qu'il a ses propres cours pour tout, et je n'ai pas trop envie d'apprendre un tas de choses qui s'appliquent uniquement à la plate-forme QT elle-même. que plus généralement. Je suppose que je pouvais éviter d'utiliser les classes QT, à l'exception des affaires d'interface graphique où je dois les utiliser, mais je ne sais pas à quel point cela serait sage ou imprudent. P>
Je pensais que Visual Studio aurait la plus petite courbe d'apprentissage, mais quand j'ouvre une application d'interface graphique test, je vois un tas de trucs d'aspect étrangers comme des carats (^) partout - j'ai trouvé en ligne que ces "poignées" ", que j'ai du mal à comprendre la définition ou le but de (" type de pointeurs similaires mais pas vraiment "est fondamentalement comment j'ai lu les gens les définir). P>
Je sais à peu près rien sur WxWidgets ou comment il se compare avec Qt. P>
Donc, chaque option a une grande courbe d'apprentissage - et j'aimerais idéalement savoir lequel minimise le temps que vous devez consacrer à l'apprentissage de la boîte à outils / cadre lui-même. Étant donné que je ne vais probablement jamais gagner de l'argent des programmes que je crée, le temps que je passe apprendre une boîte à outils spécifique serait assez coûteux. Je veux juste pouvoir faire un programme fonctionnel à l'aide des connaissances C ++ que j'ai, mais dans la forme de l'interface graphique. Pour le moment, il semble que je veux faire une application d'interface graphique, je devrais passer beaucoup plus de temps à apprendre le cadre de l'interface graphique que j'utiliserais que de rédiger la partie fonctionnelle de l'application elle-même. P>
Toute entrée de personnes plus sages et plus expérimentées que moi serait appréciée :) p>
11 Réponses :
Je suggérerais WxWidgets. Pour moi, c'est assez intuitif et a l'air bien. P>
code :: Les blocs ont été construits avec elle, alors vérifiez que vous voyez si vous aimez les graphiques. p>
Il existe également une série de liaisons pour WxWidgets, telles que WXPython, Wxerlang, etc., donc si vous décidez de désactiver C ++, vous pouvez prendre des wxWidgets avec vous. P>
Je ne peux pas commenter intelligemment sur l'aspect de la courbe d'apprentissage, mais une enquête rapide sur Stackoverflow Questions montre environ deux fois plus de questions visuelles C ++ en tant que questions QT. Signifie probablement qu'il existe un groupe de soutien plus important en place pour Visual C ++. Pourrait rendre l'apprentissage un peu plus facile s'il y a plus de gens pour aider. P>
Ou cela signifie que VC ++ est deux fois plus confusant que Qt. :-) ou qu'il y a beaucoup de questions VC ++ qui ne concernent pas de graphiques. Je crois que la communauté ici peut soutenir les deux bien.
J'utilise également WxWidgets et utilisez-le tout le temps pour les applications Windows uniquement (le seul inconvénient est que WxWidgets est notorieux pour les grandes fichiers .exe, qui peut ou non être un problème pour vous). J'ai trouvé très simple à utiliser depuis le début, surtout lorsqu'il est combiné avec un graphique (personnellement, j'utilise WXDev-C ++). P>
Je n'ai jamais utilisé qt, alors je ne peux donc pas parler de sa simplicité, mais je doute que la difficulté soit sur une échelle très différente de celle des WxWidgets. Cependant, ce que je peux dire, c'est que peu importe l'API que vous utilisez (wxwidgets, qt, winapi, etc.) votre code sera "enfermé" cette plate-forme particulière, alors ne vous inquiétez pas si vous sentez que l'apprentissage Qt vous enfermera La plate-forme QT (car la même chose se produira avec tout em> de ces API). p>
Si vous travaillez uniquement sous Windows, vous pouvez faire quelques programmes simples avec Winapi d'abord. De cette façon, vous avez une compréhension de base du niveau le plus bas de la programmation de GUI Windows avant de vous déplacer sur QT / WXWidgets. Cela dit, si vous êtes vraiment dans la programmation inter-plate-forme, ne vous inquiétez pas de cela et allez directement dans QT / WXWidgets. P>
Qui est le plus facile à apprendre va vraiment dépendre de la façon dont vous apprenez personnellement. P>
personnellement em>, j'ai trouvé QT d'être le plus facile à apprendre jusqu'à présent. Les cours d'interface graphique sont assez agréables à utiliser, mais j'ai trouvé les classes non-Gui à être excellentes, ce qui facilite l'évite de beaucoup de problèmes courants que vous obtiendrez normalement avec une API plus élémentaire. Le Documentation est excellent, IMO, de même que les livres, les exemples, etc. C'est aussi Être très activement développé, avec quelques nouvelles technologies venant dans un proche avenir (comme déclaratif). P>
J'ai trouvé Visual Studio / Windows API / .NET pour être un bon bit plus compliqué à apprendre. La documentation API sur MSDN est plutôt compliquée et n'est pas vraiment organisée de manière à trouver intuitive. P>
J'ai essayé d'apprendre à apprendre des wxwidgets plusieurs fois, mais je n'ai jamais aimé la documentation de l'API. P>
Tout cela n'est que mon expérience personnelle, YMMV bien sûr. Je dirais que je ne faisais que barboter dans tous et voir lequel vous prend le plus éloigné, il ne vous fera pas mal d'essayer de multiples. P>
Je seconde cette recommandation. J'ai utilisé qt alors mon application serait multiplate-forme. S'engagent généralement à des résultats inter-plate-forme dans plus de travaux, mais parce que QT était si bien aménagé et utile en général, j'ai trouvé qu'il s'agissait d'être réellement plus productif que d'écrire une application cible unique dans, par exemple, C # - surtout si vous Soyez coincé dans le monde quasi-c ++ du code géré (ces carats). Cela dit, je suis d'accord avec les autres commentaires ici pour vous ranger, il y a beaucoup à apprendre. Mais il y a beaucoup de récompense si vous êtes suspendu là-bas - rien de plus gratifiant que de voir vos efforts à l'écran. :-)
Peu importe ce que vous choisissez, je suis sûr que ce ne sera pas facile et sans douleur. P>
Cela dit, je sais que dans certaines écoles, ils utilisent FLTK car ils le considèrent comme étant relativement faciles à apprendre. Je n'ai jamais essayé. P>
Dans mon travail quotidien, j'utilise WTL, qui est aussi proche du système que possible tout en fournissant un certain niveau d'abstraction sur Pure Win32. Je ne suis pas sûr que je considère que je considère qu'il est facile d'apprendre, cependant, étant donné le manque de documentation. P>
FLTK est assez facile à travailler avec et est assez interrogatoire.
Je recommande CodeGear C ++ Builder (connu sous le nom de Borland C ++ Builder) de CodeGear qui vient avec un essai de 30 . La plus belle chose à ce sujet est que l'interface graphique vous fournit des composants que vous déposez sur une forme de la mode WYSIWYG et de faire fonctionner en ajoutant du code pour gérer les événements qu'il tire. Il est livré avec un tas de Compontenants hors de la boîte et vous pouvez également ajouter des composants tiers de la soirée aussi, comme l'impressionnant ExpressQuantumgrid de DevExpress ou écrivez le vôtre. C'est très puissant si vous savez ce que vous faites, mais suffisamment intuitif qu'un débutant puisse écrire une application CRUD de base de données dans environ 20 lignes de code très simple. p>
En tant que personne qui a appris C ++ par Qt, je ne peux que dire qu'ils fonctionnent très bien ensemble ensemble. C ++ Les puristes (comme je suis devenu devenu) trouveront de nombreuses choses dans qt pas à leur goût (le prétraiteur Et si vous êtes comme moi, vous jetez une poignée de Boost Bibs dans chaque projet QT, car nous voulons écrire «réel» C ++, pas la chose adoucie Qt utilise :) P> MOC CODE>, par exemple et l'absence continue d'exceptions pour les rapports d'erreur), mais en regardant en arrière, QT fournis un très em> introduction douce à C ++ pour moi. P>
Tout d'abord, commencez simplement. Il y a beaucoup à ce sujet. Si vous le trouvez fort, n'essayez pas de le prendre à la fois. P>
La plupart des bons paquets d'interface graphique ont des tutoriels. Le meilleur conseil que je puisse donner est que vous essayez chacun d'eux, ou au moins quelques-uns d'entre eux. Ce sont la meilleure introduction courte que vous puissiez avoir à la bibliothèque que vous choisissez et si elles sont bonnes, elles réduisent ce que vous devez absorber au début. Cela vous donnera une base de comparaison, car ils essaient chacun de faire des choses très similaires (et vous en verrez certaines d'entre elles avant que vous n'ayez terminé), mais ils ont une identité différente. Vous trouverez probablement que vous avez une préférence pour un et c'est celui qui est sérieux. Cela vous donnera également un sens de ce qui est difficile à propos de la programmation de l'interface graphique de l'interface graphique de l'interface graphique, car séparé em> des particularités d'un package, qui, si vous n'en avez utilisez qu'un, vous n'aurez pas vu. Personnellement, je trouve ce genre de connaissances très utile, car cela me rend moins intimidé par des détails. P>
Voici une liste de tutoriels au même endroit, même si vous les avez probablement déjà vus: p>
Deuxièmement, il me semble que vous devez obtenir une compréhension approfondie des concepts em> de la programmation de l'interface graphique, pas seulement d'une bibliothèque particulière. Ici, il n'y a pas de substitut à un livre. Je ne les connais pas tous par un long coup, mais le meilleur des tas ne vous apprendra pas seulement les détails d'une boîte à outils, ils vous apprendront des concepts généraux et comment les utiliser. Voici quelques listes pour commencer (et une fois que vous avez des titres, Amazon and Stack Whidflow aidera à en choisir un): P>
Troisième, profitez des outils de conception (Qt Creator, bâtiment de formulaire vs et ainsi de suite). NE PAS EM> Commencez par essayer de lire tout le code qu'ils génèrent: Obtenez vos propres petits programmes en cours d'exécution. Sinon, il est trop difficile de savoir ce qui compte pour un programme de base et ce qui ne fait pas. Les détails sont perdus. Une fois que vous avez les bases bas, les em> les utilisez comme des références pour apprendre à effectuer des effets spécifiques. Si vous pouvez obtenir quelque chose à travailler dans les outils de conception, vous pouvez consulter le code particulier em> qu'ils génèrent pour pouvoir essayer vos propres programmes écrits à la main. Ils sont très utiles pour l'apprentissage intermédiaire. P>
Je n'ai pas trop envie d'apprendre un tas de choses qui s'appliquent uniquement à la plate-forme QT elle-même plutôt que plus généralement. P>
blockQuote>
I Deuxièmement, le Commentaire de GRB ici: Ne vous inquiétez pas à ce sujet. Vous allez avoir besoin d'apprendre beaucoup spécifique à la boîte à outils, quelle que soit la boîte à outils que vous utilisez. Mais vous apprendrez également beaucoup qui est Général em> à la programmation de l'interface graphique avec l'une des butineuses décentes, car elles vont devoir couvrir beaucoup de même terrain. Mises en page, événements, interaction entre les widgets / contrôles, la compréhension des minuteries - Celles-ci seront proposées dans une boîte à outils de l'interface graphique que vous utilisez. P>
Soyez toutefois conscient que tout paquet d'interface graphique grave est em> un investissement de temps. Vous aurez beaucoup plus facile à apprendre un deuxième paquet si vous décidez de choisir un, mais chaque grande bibliothèque a sa personnalité et une grande partie de votre temps sera consacrée à l'apprentissage de ses bizarreries. C'est-à-dire que je pense, une donnée dans le traitement de tout sujet complexe. P>
Je suppose que je pouvais éviter d'utiliser les classes QT, à l'exception des affaires d'interface graphique où je dois les utiliser, mais je ne sais pas à quel point cela serait sage ou imprudent. P>
blockQuote>
Vous n'avez pas besoin de la plupart des classes non-GUI de QT pour utiliser l'interface graphique de QT correctement. Il y a une poignée d'exceptions (comme
qvariant code>) dont vous aurez besoin simplement parce que les classes de l'interface graphique les utilisent. J'ai trouvé que vous pouvez apprendre ceux au cas par cas. P>
QT est la meilleure option pour vous. C'est le plus facile à apprendre, le plus élégant et puissant et il est totalement gratuit. P>
Vous semblez avoir expérimenté avec géré C ++. N'utilisez pas cela, même MS recommande que vous utilisiez uniquement C ++ géré comme colle entre C ++ et C #. P>
wxwidgets: celui-ci était un fort contentionnaire jusqu'à la journée où Qt est devenu libre pour des projets commerciaux. C'était toujours à l'ombre de Qt et on sait que la documentation n'est pas très bonne et que l'API n'est pas aussi facile à apprendre que QT. La multiplate-forme MFC serait un bon moyen de le décrire. P> li>
C ++ Builder: Borland a fait trop d'erreurs avec C ++ Builder et a fini par sortir de l'entreprise de Dev Outils. C'était un bon produit et j'ai appris à l'origine une programmation de GUI de Windows dans l'une des premières versions, mais je ne l'en utiliserai plus. Il y a de meilleures options et c'est trop cher. P> li> ul>
Depuis personne ne l'a déjà mentionné, pour un souci de complétude, avoir un bouchon pour Toolkit Fox a>. Ceci est celui que j'ai utilisé la dernière fois que j'ai fait un travail d'assurance-chômage C ++ de ma propre volonté. Il y a aussi une liaison pour cela à Ruby et Python (ces derniers étant de nombreuses années à la date, cependant). P>
En général, le choix d'une boîte à outils pour un travail autodirigé se présente aux préférences personnelles pour p>
Si la plate-forme croisée n'est pas nécessaire, essayez .NET code> +
msvs code> ou
delphi code>. Facile, tout-en-un, pas de douleur. P>
Tous ces carats en VC ++ sont pour C ++ / CLI. Ce sont des ajouts spécifiques à la langue qui permettent d'intégrer l'intégration avec le CLR.