La licence GNU LGPL ne vous oblige pas à partager un quelconque code, pas même lors de l'édition de liens statiques. C'est une idée reçue - il suffit de fournir un moyen pour l'utilisateur de lier sa propre copie de Qt avec votre application et de la déboguer ; les DLLs fournissent déjà cela, avec la liaison statique vous pouvez fournir des fichiers objets.
Qt offre des fonctionnalités EXTENSIVES pour toutes les plateformes prises en charge. Les plus importantes qui me viennent à l'esprit sont les API Qt Concurrent et threading, WebKit, Qt script et bien sûr, Qt GUI. Le fait que le C++ soit en train de mourir est dû au fait que la plupart des gens considèrent le C++ comme le code de merde qui flotte partout, écrit en utilisant uniquement des API natives de bas niveau, MFC ou des bibliothèques/outils similaires. Qt est un cadre de développement moderne et stable qui existe depuis très longtemps. Nokia ne l'a pas acquis uniquement pour ses appareils, car ces derniers ne sont tout simplement PAS assez puissants pour gérer les fonctionnalités avancées de Qt, notamment Qt WebKit - WebKit lui-même est vraiment très gourmand et n'est pas destiné au développement embarqué.
Qt gagne constamment en fonctionnalités. Par exemple, la 4.5 a apporté un portage Cocoa, XSLT, ODF. Elle a également apporté un nouveau moteur matriciel qui est, tenez-vous bien, STUPIDEMENT RAPIDE, ainsi qu'un moteur OpenGL (ES) 2.0 pour les graphiques accélérés par le matériel. 4.6 a apporté un cadre d'animation, une machine à états, et un moteur JavaScript EXTRÊMEMENT rapide hérité de WebKit, pour WebKit lui-même et Qt script - SquirrelFish Extreme est actuellement le moteur JavaScript le plus rapide, battant le V8 de Chrome ; 4. 7 apporte la version de Qt de WPF, appelée Qt Quick, avec un langage déclaratif (QML, basé sur JavaScript), le module QtDeclarative (qui s'intègre au cadre Graphics View et dispose d'API pour lier des objets C++ personnalisés à QML), des API réseau étendues et des améliorations au module WebKit (et une mise à jour du code WebKit).
Que propose WPF comme widget de navigateur ? Trident. Merci beaucoup, pour l'instant Trident est l'un des moteurs les plus lents à tous points de vue, bien que j'ai entendu dire que des travaux sont en cours pour améliorer considérablement les performances. Tout un choix pour se tirer une balle dans le pied lorsque vous voulez porter votre logiciel à un autre programme, en particulier le marché en croissance rapide des appareils embarqués - vous êtes fondamentalement verrouillé à Windows CE/Mobile, alors que Qt a été porté à Windows CE/Mobile, Embedded Linux, Symbian S60 et Maemo est à venir. Qt a le support de plateforme le plus étendu que j'ai vu - voir la liste dans la documentation de Qt .
Même si Qt fournit des API de très haut niveau, il est TRÈS rapide, et lorsque la vitesse est critique, il vous permet d'aller aussi bas que vous le souhaitez, potentiellement jusqu'à l'assemblage. Les widgets étrangers fournissent un rendu rapide sans scintillement, mais vous êtes libre de demander un widget natif - il suffit de définir un drapeau. Pour la programmation concurrente, vous disposez de primitives de threading comme les mutex, les verrous en lecture-écriture, les conditions d'attente, les sémaphores, ainsi que des APIS de plus haut niveau - les pools de threads par exemple, en terminant par Qt Concurrent. Les signaux et les slots sont un moyen inestimable de faire passer des données entre des objets de manière thread-safe sans aucun verrouillage, en s'appuyant sur la boucle d'événement pour délivrer en toute sécurité tous les événements et signaux.
Qt est extensible à souhait. Vous pouvez sous-classer pratiquement toutes les classes, et si de cette façon vous ne pouvez pas effectuer une opération, vous disposez du code source complet pour toutes les plates-formes et des droits pour le modifier selon vos besoins sur toutes les options de licence. De plus, Qt garantit une compatibilité binaire ascendante entre les versions mineures et une compatibilité binaire ascendante ET descendante entre les versions de patch (bien sûr, le code dépendant d'un bug corrigé ne fonctionnera pas sur les versions avec le bug ; X.Y.Z --> X = majeur ; Y = mineur ; Z = patch). Des outils sont également fournis pour passer gracieusement aux révisions majeures à votre propre rythme : Qt 4 inclut un outil pour migrer le code Qt 3 vers le code Qt 4 ET un module de support Qt 3, implémentant toute l'API Qt 3 (sauf si la version Qt 4 de la classe est entièrement compatible avec l'ancienne), ainsi votre ancien code est toujours sûr.
Je soutiens que Qt est un cadre de développement d'applications, contrairement à WPF qui n'est qu'une partie GUI de .NET. Qt comprend de nombreux modules non GUI : Core, Network, SQL, XML, script, et plus encore. Tous fournissent à la fois des API de bas niveau (QIODevice, QTcpSocket) et des API de haut niveau (QTextStream, QNetworkAccessManager). La documentation est une partie subjective, mais à mon avis je pense qu'elle est très bonne et étendue, et quand la documentation ne suffit pas, la communauté est toujours là pour aider, ainsi que les contrats de support de Nokia.
P.S. : Je n'ai aucune expérience de .NET, je viens d'expliquer pourquoi je pense que Qt est souvent un bien meilleur choix que .NET. Il y a des exceptions à tout et .NET excelle également dans de nombreux domaines ; rien n'est parfait, il faut choisir le bon outil pour le travail. J'ai essayé d'énumérer tous les avantages de Qt auxquels je peux penser et pourquoi c'est une excellente boîte à outils. Veuillez consulter la documentation de Qt à l'adresse http://qt.nokia.com/doc/4.6/index.html pour tous les détails et rappelez-vous que Qt est une boîte à outils, elle comprend plusieurs outils : Qt Creator (IDE), Qt Designer (concepteur d'interface graphique), qmake (système de construction), Qt Linguist (traducteur) pour n'en citer que quelques-uns.