172 votes

Bonne bibliothèque GUI C++ pour Windows

Je suis à la recherche d'une bonne bibliothèque GUI pour Windows en C++. L'idéal, à mon avis, serait :

  • Modernelle. MFC, wxWidgets, Qt ont commencé il y a longtemps et n'utilisent pas les fonctionnalités modernes du C++ et la bibliothèque standard.
  • Avoir un ensemble riche de contrôles avec des fonctionnalités décentes. La capacité de laisser tomber du HTML presque partout est un bonheur pour lequel j'aime wxWidgets quand je ne le déteste pas.
  • Open source. C'est un must. Si les sources sont disponibles après l'achat, alors c'est considéré comme correct.
  • Avoir un designer de formulaire d'une manière ou d'une autre. Oui, ce serait génial. Après des années de Delphi, je pleure à chaque fois que je dois spécifier les tailles des contrôles à la main...
  • Gratuit pour un usage commercial. Mais si une bibliothèque est VRAIMENT bonne, je considérerai l'acheter.
  • Multiplateforme. Juste un souhait :) Je peux vivre sans ça.

Veuillez suggérer vos candidats. Une bibliothèque par réponse s'il vous plaît.

P.S. Je suis désolé pour les inévitables erreurs de grammaire. L'anglais n'est pas ma langue maternelle.

106voto

puetzk Points 5099

Je pense que vous rejetez trop rapidement Qt; il n'utilise pas beaucoup la bibliothèque standard, mais cela a moins à voir avec l'obsolescence qu'avec des priorités différentes. Les conteneurs QT utilisent des itérateurs, des algorithmes de modèles, etc., mais ont un modèle d'itérateur différent; les itérateurs Qt pointent entre les éléments au lieu de les pointer. Cela rend la traversée avant et arrière symétrique, et nettoie certains cas limites pour l'insertion et la suppression d'éléments lors de la traversée, bien que ce soit un peu moins efficace. Et ils fournissent également des itérateurs de style STL. C'est un choix valide pour une bibliothèque GUI à mon avis; la performance des conteneurs n'est probablement pas le facteur critique.

Quant au préprocesseur (moc), pensez-y davantage comme un compilateur IDL qui sait lire les en-têtes C++ au lieu d'avoir besoin de son propre langage. Il ne prétraite pas votre code, qui est compilé directement. Il génère simplement un fichier cpp supplémentaire contenant le marquage pour les rappels de signaux/slots, ce qui peut devenir plutôt compliqué lorsqu'ils traversent des limites de thread et nécessitent une synchronisation.

Qt est gratuit si vous pouvez publier vos sources (même pour un usage commercial; combien d'outils internes ont vraiment besoin d'être propriétaires), et à un prix raisonnable si vous ne pouvez pas (pas de royalties par unité ou quoi que ce soit de particulièrement ennuyeux).

40voto

jk. Points 4421

Si vous recherchez une bibliothèque GUI C++ moderne, alors Adam & Eve de la Bibliothèque de sources Adobe (ASL) est la bonne chose (elle repose fortement sur les bibliothèques Boost).

Ce que j'apprécie vraiment, c'est que la conception de la mise en page est totalement découplée du code. La définition de la mise en page peut être dans un fichier externe, de sorte que l'utilisateur puisse modifier la mise en page sans recompiler le programme.

Un exemple du site :

layout clipping_path
{
    view dialog(name: "Clipping Path")
    {
        column(child_horizontal: align_fill)
        {
            popup(name: "Path:", bind: @path, items:
            [
                { name: "None", value: empty },
                { name: "Path 1", value: 1 },
                { name: "Path 2", value: 2 }
            ]);
            edit_number(name: "Flatness:", digits: 9, bind: @flatness);
        }
        button(name: "OK", default: true, bind: @result);
    }
}

Qui produira :

clippingpath

En plus de cela, l'ASL dispose également de quelques autres classes utilitaires utiles.

Édition : mais elle (encore) n'a pas de concepteur de formulaire.

32voto

Frank Krueger Points 27508

WTL est un framework GUI moderne créé par Nenad Stefanovic de l'équipe ATL. Il est léger mais prend en charge toutes les fonctionnalités modernes du système d'exploitation.

Windows Template Library

La Windows Template Library (WTL) est une bibliothèque C++ pour le développement d'applications Windows et de composants UI. Elle étend ATL (Active Template Library) et fournit un ensemble de classes pour les contrôles, les boîtes de dialogue, les fenêtres de cadre, les objets GDI, et plus encore.

La documentation non officielle se trouve sur le Code Project.

28voto

maxbog Points 418

Vous devriez jeter un œil à gtkmm. Il est écrit en c++ moderne, utilise stl, suit ses conventions, inclut le support pour utf-8. De plus, c'est open source, multiplateforme et sous licence lgpl. À partir de leur site :

Caractéristiques :

  • Utilisation de l'héritage pour dériver des widgets personnalisés.
  • Gestionnaires de signaux de type sécurisé, en C++ standard.
  • Polymorphisme.
  • Utilisation de la bibliothèque Standard C++, y compris les chaînes, les conteneurs et les itérateurs.
  • Internationalisation complète avec UTF8.
  • Gestion complète de la mémoire en C++
    • Composition d'objets.
    • Désallocation automatique des widgets alloués dynamiquement.
  • Utilisation complète des espaces de noms C++.
  • Pas de macros.
  • Multiplateforme : Linux (gcc), FreeBSD (gcc), NetBSD (gcc), Solaris (gcc, Forte), Win32 (gcc, MSVC++.Net 2003), MacOS X (gcc), autres.
  • Logiciel libre et gratuit pour le développement Open Source et propriétaire.
  • Discuté, conçu et implémenté publiquement.

25voto

INS Points 5679

WxWidgets - gratuit, autorisé pour une application commerciale avec de nombreux concepteurs disponibles ( http://wxdsgn.sourceforge.net/, http://www.dialogblocks.com/, http://wxformbuilder.org/, http://wxglade.sourceforge.net/ ... ).

Personnellement, j'écris de nombreux de mes widgets à partir de zéro mais ce n'est pas toujours une option.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X