12
votes

Quelle est l'option C ++ GUI Building avec la courbe d'apprentissage la plus facile - VS / QT / WXWidgets / etc.?

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.

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.

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.

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).

Je sais à peu près rien sur WxWidgets ou comment il se compare avec Qt.

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.

Toute entrée de personnes plus sages et plus expérimentées que moi serait appréciée :)


1 commentaires

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.


11 Réponses :


6
votes

Je suggérerais WxWidgets. Pour moi, c'est assez intuitif et a l'air bien.

code :: Les blocs ont été construits avec elle, alors vérifiez que vous voyez si vous aimez les graphiques.

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.


0 commentaires

2
votes

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.


1 commentaires

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.



5
votes

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 ++).

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 de ces API).

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.


0 commentaires

12
votes

Qui est le plus facile à apprendre va vraiment dépendre de la façon dont vous apprenez personnellement.

personnellement , 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).

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.

J'ai essayé d'apprendre à apprendre des wxwidgets plusieurs fois, mais je n'ai jamais aimé la documentation de l'API.

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.


1 commentaires

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. :-)



2
votes

Peu importe ce que vous choisissez, je suis sûr que ce ne sera pas facile et sans douleur.

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é.

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.


1 commentaires

FLTK est assez facile à travailler avec et est assez interrogatoire.



1
votes

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.


0 commentaires

8
votes

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 MOC , par exemple et l'absence continue d'exceptions pour les rapports d'erreur), mais en regardant en arrière, QT fournis un très introduction douce à C ++ pour moi.

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 :)


0 commentaires

12
votes

Tout d'abord, commencez simplement. Il y a beaucoup à ce sujet. Si vous le trouvez fort, n'essayez pas de le prendre à la fois.

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é 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.

Voici une liste de tutoriels au même endroit, même si vous les avez probablement déjà vus:

  • Tutoriel de Qt
  • Tutoriel WXWidgets
  • livre GTKMM . Pas tout à fait un didacticiel, bien qu'il y ait beaucoup d'exemples.
  • .NET Tutoriels, soit pour Winforms, soit pour WPF.

    Deuxièmement, il me semble que vous devez obtenir une compréhension approfondie des concepts 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):

    • Liste des livres QT
    • wxwidgets book ( Version PDF )
    • Il y a des tonnes de livres WPF et WinForms. Je ne peux pas faire une bonne recommandation ici malheureusement.

      Troisième, profitez des outils de conception (Qt Creator, bâtiment de formulaire vs et ainsi de suite). NE PAS 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 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 qu'ils génèrent pour pouvoir essayer vos propres programmes écrits à la main. Ils sont très utiles pour l'apprentissage intermédiaire.

      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.

      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 à 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.

      Soyez toutefois conscient que tout paquet d'interface graphique grave est 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.

      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.

      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 ) 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.


0 commentaires

0
votes

QT est la meilleure option pour vous. C'est le plus facile à apprendre, le plus élégant et puissant et il est totalement gratuit.

  • Visual C ++: C'est une IDE, mais elle est livrée avec sa propre bibliothèque d'interface graphique appelée MFC. MFC est une vieille bibliothèque avec de nombreux bizarreries et il est difficile d'apprendre et d'utiliser. De nombreux programmeurs C ++ l'utilisent sous Windows car il vient de MS, c'est rapide et c'est gratuit si vous achetez Visual C ++. Étant donné que VC ++ est une IDE, vous pouvez également utiliser WXWidgets et Qt avec elle, bien que dans votre cas particulier, je recommanderais à la place du Créateur Qt.

    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 #.

    • 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.

    • 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.


0 commentaires


0
votes

Si la plate-forme croisée n'est pas nécessaire, essayez .NET + msvs ou delphi . Facile, tout-en-un, pas de douleur.


0 commentaires