wxWidgets est une bibliothèque C++ qui permet aux développeurs de créer des applications pour Windows, macOS, Linux et d'autres plateformes avec une seule base de code. Elle possède des méthodes pour la liaison avec des langages populaires tels que Python, Perl, Ruby et plusieurs autres langages. wxWidgets donne aux applications un aspect et une sensation véritablement natifs, car elle utilise l'API native de la plateforme plutôt que d'émuler l'interface graphique. wxWidgets est une bibliothèque libre et open source utilisée par des logiciels populaires comme Audacity, FileZilla, KiCad, BitTorrent et de nombreux autres programmes.
La bibliothèque graphique wxWidgets contient un grand nombre de classes et de méthodes que le programmeur peut utiliser et personnaliser. Les applications affichent généralement des fenêtres contenant des contrôles standard, dessinant éventuellement des images et des graphiques spécialisés et répondant aux entrées de la souris, du clavier ou d'autres sources. Elles peuvent également communiquer avec d'autres processus ou piloter d'autres programmes. En d'autres termes, wxWidgets permet aux programmeurs d'écrire relativement facilement une application qui fait toutes les choses habituelles des applications modernes.
Bien que wxWidgets soit souvent considérée comme une boîte à outils de développement d'interface graphique, les auteurs estiment qu'il est bien plus que cela et qu'il possède des fonctionnalités utiles pour de nombreux aspects du développement d'applications. Cela doit être le cas, car l'ensemble d'une application wxWidgets doit être portable sur différentes plateformes, et pas seulement la partie GUI. En outre, wxWidgets fournit des classes pour les fichiers et les flux, les threads multiples, les paramètres d'application, la communication interprocessus, l'aide en ligne, l'accès aux bases de données, et bien plus encore.
L'équipe de développement de la bibliothèque a récemment publié wxWidgets 3.2. Cette version est l'aboutissement de nombreuses années de développement depuis la dernière version stable 3.0. Elle contient plus de 15 000 commits de plus de 400 contributeurs uniques (dont plus de 200 avec des contributions multiples). « Après presque 9 ans depuis le début de la dernière série de versions stables de wxWidgets, la première version de la nouvelle série stable 3.2 est enfin disponible sur GitHub », a annoncé l'équipe. Voici un résumé des principales nouveautés de wxWidgets 3.2 :
- améliorations du système de construction : prise en charge de nouveaux compilateurs (y compris MSVS 2022, g++ 12, clang 14) avec une manière encore plus simple d'utiliser wxWidgets à partir de MSVS, avec le fichier wxwidgets.props, ainsi qu'un système de construction CMake entièrement nouveau ;
- prise en charge du mode sombre natif sous macOS 10.14 et plus, prise en charge du matériel ARM et des versions de macOS jusqu'à 13 ;
- prise en charge l'affichage HiDPI avec la nouvelle API basée sur wxBitmapBundle, mais presque parfaitement rétrocompatible, y compris le DPI par moniteur et les changements dynamiques de DPI ;
- prise en charge de HTTPS et HTTP/2 avec wxWebRequest et ses équivalents ;
- prise en charge du gel des lignes/colonnes dans wxGrid ;
- prise en charge des événements liés aux gestes de la souris (projet GSoC 2017) ;
- prise en charge des tailles de police non entières et poids de police arbitraires dans wxFont ;
- prise en charge des largeurs de stylo fractionnaires dans wxGraphicsContext ;
- prise en charge des fenêtres d'étiquettes arbitraires dans wxStaticBox ;
- prise en charge du balisage dans les éléments de texte de wxDataViewCtrl ;
- prise en charge des fichiers ZIP 64 ;
- prise en charge de la compression LZMA ;
- prise en charge de l'accessibilité nettement améliorée sous MSW ;
- nouvelle implémentation de wxWebView basée sur Edge ;
- prise en charge de la vérification orthographique native dans wxTextCtrl ;
- nouveau wxRegEx basé sur PCRE ;
- nouvelles classes :
- wxActivityIndicator ;
- wxAddRemoveCtrl ;
- wxAppProgressIndicator ;
- wxBitmapBundle ;
- wxNativeWindow ;
- wxPersistentComboBox ;
- wxPowerResourceBlocker ;
- wxSecretStore ;
- wxTempFFile ;
- wxUILocale
- de nombreuses nouvelles fonctionnalités dans les classes existantes.
- nouveaux gestionnaires XRC pour toutes les nouvelles classes et certaines des classes existantes ;
- améliorations significatives de : wxBusyInfo, wxDataViewCtrl, wxDirDialog, wxGrid, wxNotificationMessage, wxSpinCtrl, wxStaticBox, wxStyledTextCtrl, wxUIActionSimulator ;
- amélioration de la sécurité à la compilation avec la possibilité de désactiver les conversions implicites dangereuses entre les chaînes wxString et char* ;
- dernières versions de toutes les bibliothèques tierces fournies, y compris tous les correctifs de sécurité et le support de WebKit 2 et GStreamer 1.7 sous Unix ;
- un meilleur support de Wayland, même s'il est encore perfectible, dans wxGTK ;
- support OpenGL remanié et mieux adapté à l'OpenGL moderne (3.2+) ;
- amélioration du support de C++11 et plus, wxWidgets peut être construit avec des compilateurs C++20 ;
- nouveau portage expérimental de wxQt ;
- de nombreuses corrections de bogues.
Une différence clé entre wxWidgets et Qt ou GTK est que wxWidgets utilise des contrôles natifs pour créer l'interface utilisateur, contrairement à Qt ou GTK qui dessinent tout eux-mêmes. Qt semble imiter une sensation native, mais wxWidgets fournit une véritable interface utilisateur native.
Source : wxWidgets 3.2
Et vous ?
Quel est votre avis sur le sujet ?
Que pensez-vous des nouvelles fonctionnalités de wxWidgets 3.2 ?
Quelle bibliothèque utilisez-vous entre wxWidgets et Qt ? Quelle comparaison faites-vous entre les deux ?
Voir aussi
GCC 12 apportera de nouvelles fonctionnalités C++, des améliorations et les corrections de bogues, annoncée pour avril 2022
Intel achève l'adoption de LLVM et mettra fin aux mises à jour des compilateurs C/C++ classiques, le compilateur Intel C/C++ basé sur LLVM présente un avantage de 41 % par rapport à gcc
JetBrains dévoile la feuille de route de CLion 2022.2 : un aperçu de ce qui vous attend dans la prochaine version majeure de l'EDI C/C++ multiplateforme