9
votes

Manière la plus simple d'ajouter une application GUI à C ++

Je produit un logiciel numérique pièce en C ++ et souhaitez ajouter une interface graphique (principalement pour Windows). Je sais comment produire des gites à l'aide d'éditeurs confortables dans des langues modernes comme Java ou .NET. Maintenant, ma question est de savoir ce qui est le moyen le plus facile et le plus confortable d'ajouter une interface graphique pour mon programme. Dans le choix des outils, je suis complètement libre (open source et portabilité serait bien), mais veuillez également garder à l'esprit la manière dont le code de la chaudière et les interfaces qui doivent être conservés sont nécessaires si l'interface graphique est implémentée dans une autre langue (comme c #). .

S'il vous plaît ne vous suggérez pas de changer l'ensemble du projet de C ++! Et notez que le programme ne nécessite pas beaucoup d'interaction entre le code C ++ et l'interface graphique.


4 commentaires

Avez-vous suivi un coup d'oeil à .net?


À propos de qt? Great IDE et Tool-Set, plus il est disponible sous la LGPL.


@Adam: Pas grand par rapport à ex. VS10 avec assistance visuelle x installée. Mais pourquoi ne pas faire une réponse? @User: C'est probablement une meilleure question pour les programmeurs.Se étant donné qu'il est subjectif.


FLTK est définitivement l'alternative la plus simple - fltk.org


8 Réponses :


1
votes

S'il ne s'agira d'une simple interface graphique consistant principalement de contrôles standard, je le ferais avec MFC. Il peut être obsolète et n'était jamais vraiment bon, mais il est toujours utile d'obtenir rapidement une graphique de fenêtres natales.


0 commentaires

0
votes

L'application basée sur la boîte de dialogue MFC pourrait répondre aux besoins.


0 commentaires

4
votes

Autant que j'aime C ++, il est difficile de construire une interface graphique avec. Je construirais une application de Winforms C # rapide qui vous permettrait d'utiliser des éléments tels que les concepteurs visuels de Visual Studio (boutons de glisser-déposer et tels) et appelez votre application C ++ à l'aide de p / invoke.

C ++ produira souvent des gites plus lisses et plus agréables, mais cela prend un peu plus de travail de la boîte.


3 commentaires

Je suis d'accord. On peut également envelopper un projet C ++ existant dans OCX ou C ++ / CLI Wrapper pour une interface de programmation. Mais ne pensez même pas faire de Guisse en C ++ / CLI!


@surfen: Je ne parle pas de C ++ / CLI. (Afaik vous obtenez des concepteurs visuels dans tous les cas)


Je voulais dire: BTW, n'envisez pas de Guis en C ++ / CLI. Je ne voulais pas ressembler à je suis en désaccord avec votre réponse, plus d'un commentaire latéral pour d'autres lecteurs. Il y a sûrement le designer, mais je suis allé ainsi et avons failli échoué un projet important à cause de cela. Le concepteur en C ++ / CLI est très buggy et limité, comparé au C # un.



4
votes

wxwidgets serait un bon choix pour une interface graphique croisée pour C ++


0 commentaires

6
votes

QT est un choix décent. C'est stable, possède une merveilleuse interface C ++ (par opposition à la MFC) et dispose d'un outil de concepteur pratique.
Les frais généraux de l'apprentissage de zéro pourraient cependant être plus que ce que vous êtes prêt à investir. Il a une certaine courbe d'apprentissage.


3 commentaires

+1 - Mais j'aimerais noter qu'il est difficile d'appeler une bibliothèque QT A C ++, étant donné qu'il nécessite un compilateur séparé avant de construire avec elle.


Un outil. Une langue. Nous n'appelons pas lex et yacc (ou flex / bison ) c bibliothèques, même si vous avez mis c code dans eux et ils génèrent des fichiers .c . Il est trop grave vraiment qu'ils comptent sur le prétraitement - tout ce que le prétraitement est bon (des signaux / fentes) sont possibles dans la plaine C ++ (dans l'époque moderne »au moins, pas lorsque QT a été conçu). (Dans mon expérience, la partie "réflexion" est utilisée simplement pour cacher des problèmes avec les conceptions des gens.) C'est frustrant parce que QT est une bibliothèque de haute qualité dans un autre respect.


J'ai utilisé la "réflexion" pour créer une interface graphique créée de manière dynamique. C'est un assez grand "simplement"



0
votes

Selon ce dont vous avez besoin, il y a une belle imitation faite par Mikko flottant autour de celle que vous pouvez simplement plug-in et utiliser assez rapidement. C'est fait à OpenGL cependant, ce ne sera donc pas votre gui-guidé standard, mais c'est vraiment petit et vraiment facile à travailler. Vous pouvez télécharger la version de r'lyeh à partir d'ici: http: / /code.google.com/p/colony9/source/browse/include/goo/imgui.h .

C'est la façon la plus facile et la plus confortable que je connaisse, elle dépend de SDL.


0 commentaires

6
votes

Les déclarations concernant l'ISO C ++ dans les commentaires de cette réponse sont mal édités. Aucune des solutions présentées ici n'imposerait le code de calcul une obligation de passer à un dialecte différent de C ++. Le code de l'interface graphique elle-même pourrait être une autre histoire.

Les réponses sur l'utilisation des formulaires Windows avec géré C ++ sont probablement les plus pratiques. Beaucoup de code associé à l'interface utilisateur seraient dans un dialecte (extension) de C ++ où les pointeurs de poubage .NET-poubelle vivraient aux côtés des pointeurs traditionnels ISO C ++. Je n'ai pas utilisé cette méthode mais de ce que je lis, cela pourrait être meilleur que ce que j'ai utilisé.

MFC pourrait être plus pratique si vous ne souhaitez pas investir dans des connaissances .NET pour cette tâche. Il utilise des constructions standard C ++ pour envelopper l'API Windows. L'API Windows utilise une convention d'appel particulière que C ++ n'utilise normalement pas et prend une extension à C ++ pour fonctionner avec cela, mais cela n'est pas différent d'avoir un programme C ++ qui appelle certaines fonctions «C». Visual Studio dispose d'un outil de mise en page d'interface graphique qui est vraiment bon à la disposition de dialogues et à interfacer les widgets de dialogue vers des variables qui reflètent l'état des widgets. J'ai utilisé ceci. Si vous pouvez faire bouillir votre interface graphique vers une boîte de dialogue, ce serait une excellente option, sinon vous utiliseriez l'une des fenêtres gérés par la mise en page de MFC.

Évidemment, les options ci-dessus ne gèrent pas d'autres plates-formes que vous pourriez avoir à l'esprit.

Il existe également divers kits d'outils nés sur d'autres plates-formes et ont été décemment portés à Windows. GTK, QT, FLTK et WXWindows vous viennent à l'esprit. Je n'ai utilisé aucun des outils de dialogue et de concepteur d'applications qui fonctionnent avec ceux-ci, et je n'ai pas du tout utilisé du tout. Lorsque j'ai examiné la dernière fois Qt, il y avait une carte de prétraitement spéciale pour le code de l'interface graphique. Outre ces kits d'outil portables sont pure iso c ++ aussi loin que je sache.

comme une option vraiment hors-là, on pourrait programmer au protocole X Window System utilisant "libx". Autant que je sache, cela impliquerait aucun code non iSO C ++.


1 commentaires

Je suggère fortement de ne pas faire de Guis (Winforms ou WPF) dans C ++ / CLI ("géré C ++"), en raison de problèmes avec Visual Studio Designer. Il vaut mieux faire des gites dans C # et les exposer via des proxies C ++ / CLI personnalisées au projet C ++. J'ai appris cette "voie difficile".



1
votes

Je dois rire à tous les moyens de cuire ce chat. La vie est belle. Ma réponse est un produit que je gère. XVT peut le faire pour vous. Le moyen le plus simple est de le faire pour vous ou vous donnons un modèle pour y arriver. C'est juste une question de si vous avez plus d'argent que le temps. Alors je me regarderais. Ce serait la quantité la plus rapide et la moins importante d'efforts de votre part.


0 commentaires