mardi 7 juillet 2020

Installation de Qt/C++ 5.9

Avec Qt cela commence toujours par la maîtrise de l'installation, en effet ce n'est pas simple d'installer correctement Qt et son compilateur C++ car ils dépendent terriblement  de votre plateforme.

Alors aujourd'hui, j'ai installé la version 5.9 de Qt qu'est ce que j'ai sur ma machine ? Déjà le Qt Creator n'est plus dépendant de la version on le retrouve à un niveau supérieur.

Je souhaite vérifier mon installation en exécutant un nouveau projet exemple proposé par Qt 5.9 : Chart Themes Example. J'ai auparavant installé sur ma machine une version de Microsoft Visual Studio.

Qt/C++ Tools 

Comme sur tout environnement de développement, vérifier son installation, c'est vérifier que l'on peut exécuter un projet exemple et que l'on peut mettre un point d'arrêt et déboguer en pas à pas.

Alors allons y.

Qt/C++ - Qt Creator - Page d'accueil

Je choisie le projet "Chart Themes Example". La première étape de configuration du projet me propose comme Kit de développement celui que j'ai installé MSVC2013_64bit c'est bien parti.

Qt/C++ - Configuration du Projet

Débogue j'ouvre le fichier main.cpp et je positionne un point d'arrêt.

QT/C++ Placer un point d'arrêt

Je clique sur l'icône tout en bas à gauche de mon IDE QT Creator.

Lancer l'exécution de mon projet en Debug

Je vérifie l'exécution de mon nouveau projet :

L'exécution de mon projet s'est arrêtée sur le point d'arrêt.

Je continue l'exécution, la fenêtre de ma nouvelle application s'ouvre. Je choisie un thème.

Exécution du projet "Chart Themes Example"

Voilà, je suis prêt à développer avec Qt 5.9 !

Et pour tout autre problème d'installation avec Qt, je vous propose le site très bien fait de :

guillaumebelz.github.io

Des erreurs, encore des erreurs

Et bien oui j'ai encore un souci lorsque je lance mon Qt Creator, j'ai la boite suivante :

Au lancement de Qt Creator

Alors de quoi s'agit-il ? L'initialisation de l'extension a échoué: Cannot create OpenGL context. Je pense que c'est lié à l'environnement de ma machine de développement ...

Un problème de configuration de Qt ? 


Menu Aide -> A propos des Plugins.

Plugins Installés mais qui ne fonctionne pas sur cette machine

Je décoche les deux cases, Qt me demande de redémarrer et ça y est ça fonctionne.

Don't forget to go to the beach it's good for your health ;)

Qt en 2020 on en est où ?

Je reprends un peu mon Qt que je l'avais laissé quelques années auparavant. Alors en 2020 Qt, on en est où ? Je repasse rapidement par le site de référence et je me rends compte que je ne suis pas perdu c'est typiquement le même site, Qt c'est d'une complexité peut commune !

Qt - One framework, One Code base, Any plateforme

Non, en effet, Qt n'est pas grand, Qt est énorme. Et l'on ne peut pas imaginer de prendre en main ce framework ni cet environnent de développement en 1 jour.

Alors si je m'étais arrêté à la version de Qt/C++ 5.4 mais que s'est-il passé depuis ...

Qt - New Features in Qt 5.9

Je prends quelques notes.

Qt Core

    QProcessEnvironment is now available on iOS, tvOS, watchOS, and VxWorks.

Multiplateforme c'est le coeur c'est la clef cela a un prix le prix de complexité mais une récompense celle de pouvoir déployer sur n'importe qu'elle machine ... à peu de choses prêt.

Qt GUI

    QPainter's GL engine is now functional with core profile OpenGL contexts as well.

La librairie grapqhique c'est le nerf de la guerre c'est elle qui permet au logiciels d'afficher sur les écrans de fantastiques simulations.

Qt QML

    Rewritten garbage collector to provide better memory consumption and improved, more predictable performance for JavaScript code

Il me semble que QML c'est ce qui permet d'écrire du Web avec Qt.

Qt Charts

    Added support for minor grid lines for logarithmic axes

Qt SerialBus

Added plugin to support SYS-TEC electronic CAN adapters on Windows

J'ai beaucoup travaillé avec avec le Port Série. Il semble qu'il y a là une amélioration à noter, ce serait sans doute plus facile aujourd'hui, à l'époque j'ai écris un Driver en C puis je l'ai utilisé avec Qt :


Voilà, je vous laisse découvrir le reste des améliorations de la version Qt 5.9. Parcourir cette liste des améliorations de Qt nous laisse entrevoir l'étendu de Qt, non ce n'est pas grand, c'est gigantesque.


mardi 31 janvier 2017

Qt Installation - Qt 5.8.0 Setup

Vous souhaitez installer Qt 5.8.0 que se passera t-il lorsque vous cliquerez sur le bouton de l'install ? Regardons cela ensemble. Pour commencer, ce n'est pas compliqué moi j'ai entièrement désinstallé la version précédente avant d'installer la version 5.8.0.

Une fois le bouton "View All Downloads" trouvé sur le site Qt Download Open Source et l’exécutable :

qt-opensource-windows-x86-msvc2013_64-5.8.0.exe

téléchargé, voici ce que j'ai coché au moment de l'install :

Installation de Qt 5.8.0 - 1

Cela ne ressemble en rien à l'installation de version 5.4 !

Installation de Qt 5.8.0 - 2

Au bout de dix bonnes longues minutes :

Installation de Qt 5.8.0 - 3

On voit que la procédure colle tout dans le répertoire C:\Qt\Qt5.8.0 donc rien n'est utiliser ou n'est en commun avec une version précédente de Qt.

Une fois le lancement de Qt Creator effectué, on peut voir de nouveaux exemples :

Exemple Qt/C++ dans Qt Creator

Les nouveautés de Qt 5 sont le Qt 3D, le QML et le Qt Quick.

Qt Encore des erreurs

Qt 5.8.0 ne fonctionne absolument pas sur une machine virtuelle Oracle VM ce qui est vraiment dommage ! L'écran de Qt Creator est tout noir et se fige. Encore un problème de driver graphique (OpenGL ou DirectX) !

Mise à jour juin 2020
Voici un autre bon site pour prendre en main l'installation de Qt :

guillaumebelz.github.io - Installation et premiers pas avec Qt 5.14

Voyez que ce n'est pas si simple, notamment une chose que j'ai oubliée c'est qu'il faut installer un compilateur C++ et là une petite phrase bien sympathique : "Qt ne supporte pas encore Clang sur Windows". Donc vous devez choisir un autre compilateur ...

mercredi 18 janvier 2017

Utiliser Qt/C++ pour développer une Application Web est-ce possbile ?

Est-il possible de développer une application web avec Qt/C++ ? C'est une bonne question en effet dont la réponse n'est pas si évidente malheureusement. On pourrait croire sur la site officiel de Qt que ça tombe sous le sens. Je vais me faire l'écho ici d'une question posée dans un forum Qt sur LinkedIn car je suis moi même surpris du développement que prend cette question et ses commentaires.

Aux développeurs Qt, on va souvent poser la question suivante : tout ceci est bien joli mais est ce que cela peut s'exécuter dans un browser web ? Et le problème ce sont déjà les différentes technos, les différents types d'applications que l'on doit choisir à la base pour développer avec Qt.

Je tiens à vous signaler ici que je ne vais pas me lancer dans le développement de Mock pour chacune des technos, j'ai pas l'envie et pas le temps. Je ne fais que répertorier les différentes technos évoquées dans cette question au cas où ... on me pose la même question et où je doive y répondre rapidement.

Voici donc une plongée dans les différentes technos qui pourraient permettre de développer une application Web avec Qt/C++.

qmlweb

La première idée c'est QML Web et ce projet existe dans GitHub à l'adresse suivante :

https://github.com/qmlweb/qmlweb

https://github.com/qmlweb/qmlweb
La doc dit : Bring the power of QML to the web browser. Bon il faudra surement regarder cela de plus prêt, moi j'avance ...

48 Watch, 283 Star, 28 Fork ça à l'air sérieux.

Mais on se pose encore des questions :

Which browser engine use? it work on mobile systems too? (android and iOS mainly). If it use the standard Qt web engine it will suffer on the same problem on mobile OS...

Cutelyst

https://github.com/cutelyst/cutelyst/wiki
C++ Web Framework built on top of Qt, using the simple approach of Catalyst (Perl) framework. http://cutelyst.org

qaap

Petar Koretić We also developed and are developing Qt middleware based web framework (as Node.js express is for example) https://github.com/qaap/recurse

qtwebservice


http://qtwebservice.io/
Simple and flexible web framework
Write everything in QML and JavaScript

TreeFrog Framework

High-speed C++ MVC Framework for Web Application

http://www.treefrogframework.org/
Remarque : ce que j'aime bien dans celui là c'est que l'on y parle de MVC ... pour le reste cela à l'air sérieux.

other frameworks ...




C++ Web Toolkit

Conclusion

Pour moi c'est assez clair, chacun y va de son framework et du bon bout de code qui permettra d'embbeded une appli Qt dans un browser. Mais cela ne me parait pas très sec et pour l'instant, je ne saurais pas par où commencer. Si en fait choisir le bon framework mais il faut attendre le mainstream qui sera certainement intégré dans Qt.

Je savais que la portabilité multi-plateformes de Qt était un "petit" problème ... le web ne semble pas être à la porté de tout le monde ... à creuser !

jeudi 7 avril 2016

Qt/C++ pour Android - Installation et MaintenanceTool

Comment utiliser le Maintenance Tool de Qt pour installer de nouveaux modules ? Dans deux articles précédents, on a vu l'ensemble de ce qu'il faut installer et pour exécuter une application Qt/C++ dans un émulateur d'Android ... Ce n'est pas satisfaisant alors essayons d'aller plus loin.

Je pensais trouver l'outil dans le "Menu Démarrer" ... bon, je vais directement exécuter :

C:\Qt\Qt5.5.0\MaintenanceTool.exe

Exécution du Maintenance Tool de Qt/C++
Chouette, je vais pouvoir Ajouter ou Supprimer des modules à mon installation de Qt, je choisie donc cette option et je clique sur suivant :

MaintenanceTool Qt erreur d'exécution 
Et bien on aura pas été bien loin. Quelle lutte ce Qt quand même ...

Pffffffff !!!

Pas d'autre choix que de cliquer sur "Paramètres".

J'indique le répertoire d'installe de mon Qt/C++ :

Configurer le MaintenanceTool avec le répertoire de Qt/C++
Je clique sur Ok :

Qt 5.5 - MaintenanceTool
Finalement, je voulais installer Android pour x86 !?

Honnêtement ? Je ne sais pas pour les autres plateformes mais pour Windows c'est de la daube ce MaintenanceTool !

Dans la figure suivante : Ici

On voit très clairement qu'il existe une Installe pour Android x86 mais comment faire ?

Pffffffff !!!

vendredi 26 février 2016

Qt - Roadmap pour 2016 - Qt 5.6.0 released in Mars 2016

Qu'elles sont les nouveautés prévues pour Qt/C++ en 2016 ? Chaque année on ne nous prédit que le meilleur qu'en est-il vraiement ? La version de Qt sera la version 5.6 mais on aura tout au long de l'année :
Qt releases: Qt 5.6 in March, Qt 5.7 targeting May and Qt 5.8 targeting October.

Qt Roadmap in 2016

Automatic support for high-dpi : capacités graphiques élevées : dot per inch
Qt 5.6 est la "First Long-Term Supported Qt 5 Release" cela signifie que cette version sera supportée au moins pour les trois prochaines années.

Support for High-DPI, signifie qu'une application écrite pour un écran de résolution standard sera automatiquement adaptée aux écrans de haute résolution.

QT 5.7 introduira de nouveaux modules :
Qt Quick Controls 2
Qt 3D
Qt SerialBus : différents bus de communication, CANBus et ModBus

Qt Wayland Compositor TP : Multi-process support pour appareils embarqués
Qt SCXML TP

La suite à lire sur le blog de Tuukka Turunen.

mercredi 10 février 2016

Comment donner des propriétés à mon exécutable Qt sous Windows ?

J'ai généré un exécutable avec Qt/C++ un .exe. Maintenant, si je clique bouton-droit que j'affiche les propriétés de mon exécutable :

Qt/C++ Comment setter les propriétés de mon exécutable ?

Comment puis-je modifier les Détails de mon exécutable ? Mettre ce que je souhaite dans les champs "Type", "Version du fichier", "Nom du produit", "Copyright" ...

Avec Qt/C++ comment modifier les champs de mon exécutable?

Et bien, je cherche encore la réponse. 

Sous Visual Studio cela passe par la constitution d'un fichier "manifest" de l'application. Sous Qt ? Etant donné l'environnement multi-plateforme ? Je cherche ...

à vous

Mis à jour 07/03/2016 : Il me semble que la réponse se trouve ici :

SignalSlot - How to enable Qt applications to run as administrator on windows

où l'on préconise la création et l'utilisation d'un fichier manifest.xml ... et de l'utiliser dans la création de l'exécutable.

CQFD !

vendredi 14 août 2015

Qt - How to make Qt Widget grow with the window size ?

Vous cherchez à faire que les éléments placés dans la fenêtre de votre application Qt/C++, suivent la taille de la fenêtre principale quand l'utilisateur resize (redimensionne) la fenêtre c'est à dire qu'il tire sur les poignées. La solution est ici.

Voici ce que je lis à ce sujet sur StackOverFlow :
http://stackoverflow.com/questions/6044836/how-to-make-a-qt-widget-grow-with-the-window-size

C'est totalement insuffisant, comme les intervenants de cet article, j'ai passé du temps à essayer de comprendre ce que notre ami avait bien voulu dire. Il faut d'abord se familiariser de l'utilisation des Layouts de Qt afin de créer le formLayout que l'on voit sur la figure suivante pour pouvoir y insérer les objets graphiques de la fenêtre principale.

La solution à notre question passe, en suite, par la disparition de la l'icone "Interdiction" que l'on voit sur l'image suivante :

centralWidget est affublée d'une icone "interdiction de stationner"
Ce que les commentaires du post essayent d'expliquer, c'est qu'il faut aller chercher l'option de la fenêtre principale : "Mettre en page dans un layout de formulaire" ou dans une grille et cliquer dessus pour faire disparaître l'icône d'interdiction :
Resizable Application Qt - Mise en page dans un Layout
Ceci s'obtient donc en sélectionnant la "QMainWindow", en cliquant droit et en allant chercher l'option "Mettre en page" tout en bas, puis "Mettre en page dans un layout de formulaire". L'icône d'interdiction a disparue :

Qt - Fenêtre Principale - Mise en page automatique dans un Layout de formulaire
Ainsi tout les objets graphiques que l'on a placé dans le formLayout se retailleront lorsque l'on modifiera la taille de la fenêtre principale.

Je crois que là, on vient de s'ouvrir un univers entier. Il faut maintenant essayer d'autres options, les layouts sont de quatre types, il faut voir comment cela se passerait pour la mise en page d'enfants de la fenêtre principale.

C'est à nous de jouer !

jeudi 13 août 2015

Qt - Style Sheet - Error !

Alors que je regarde d'un peu plus prêt l'utilisation des Styles et des Feuilles de Style avec Qt, j'ai créé un projet avec le Kit "Desktop Qt MSVC2013" et Boom plus de feuille de style. Je change de Kit pour "Desktop MinGW" et là, la feuille est de nouveau appliquée ...

Comme quoi Qt ... c'est délicat et avant de le faire fonctionner pour toutes les plateformes il faut s'accrocher.




Qt - Installation pour Android (Windows x86)

Afin de travailler avec Qt en C++ pour Android, j'installe le "Windows Host Qt 5.5.0 for Android (Windows 32-bit, 1.0 GB)". J'ai eu des gros soucis avec la mise à jour d'un Kit de développement Qt/C++ existant qui n'a jamais fonctionné, je décide donc d'installer directement ce Kit :

Téléchargement du Kit Qt 5.5.0 for Android sur le site de Qt
C'est parti pour une nouvelle installation de Qt/C++ :


Cette fois l'installeur me demande un compte d'utilisateur :


C'est reparti pour un tour :


Il faut cliquer sur "Suivant":


Je suis d'avis de ne pas changer ce Path ... ;)
Je clique donc sur "Suivant >" :


J'expande tous les treeViews pour voir ce que ce Kit à l'intention d'installer ...
Étrange, je me demande ce que cela à de spéciale. Qu'elle est la différence avec l'utilisation du "Qt Maintenance Tool" ? Bref, une fois de plus Qt/C++ comme d'habitude ce n'est pas clair !

Tel que c'est présenté, je me demande si Qt Creator va être installé ?

lundi 10 août 2015

Qt/C++ pour Androïd - Installation

Quelles sont les bases pour développer à partir de Qt en C++ pour la plateforme Android ? Comment bien démarrer dans le développement d'application pour Android avec Qt/C++ ?

Dans la documentation Qt, à la page suivante Qt Documentation - Getting Started with Qt for Android

Vous trouverez qu'il faut installer tout un tas de trucs ... C'est pénible mais il faut en passer par là. Décortiquons ce que l'on nous demande, déjouons les pièges de toutes ces installations successives.

Télécharger et installer le dernier Android SDK et NDK

Quand on arrive sur le site Android, c'est le "Android Studio" que l'on vous propose de télécharger. Allons-y. On aurait tout aussi bien pu installer le "Stand Alone SDK" mais bon, aujourd'hui on a des machines rapides et puissantes ...

Téléchargement et installation de Android Studio :


Installe les éléments suivants :


Cliquez sur "Next >", l'installeur s'exécute, c'est énorme, 962 Mo compressés :


Affichez les détails :


Lancez "Android Studio" pour voir, la procédure de configuration est impressionnante :



Attendre, patience, c'est long .... Et enfin :


Je ne vais pas plus loin, pour l'instant.

Téléchargez et installer le Android NDK

Après le "Android Studio", il faut le NDK (Native Development Kit) pour développer en C et en C++ :

et tirer parti de librairies existantes dans ces langages.


Je choisie le :
Windows 64-bit android-ndk-r10e-windows-x86_64.exe 419616132 8412bb4991a95e08fda50b5a44d95df7

Car j'ai effectivement une librairie en langage C compilée avec MinGW w64 ... Je sens que cela ne va pas aller tout seul ... grrr.

Je télécharge et je clique dessus :


Console d'intallation du Android NDK

Installer Apache Ant v1.8 or later

Mais qu'est ce que c'est ? Cela servirait à "builder" le soft ... 

Téléchargez : apache-ant-1.9.6-bin.zip

https://ant.apache.org/bindownload.cgi

Extraire dans : C:\apache-ant-1.9.6

Ouvrir le fichier "INSTALL"
un lien vers :

Il faut créer la variable d'environnement "ANT_HOME" avec le path et l'ajouter dans le path.

On va être bon pour installer également "Java SE Development Kit" car on voit que Ant fait appel à Java.

Installer Java SE Development Kit

http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
Ça commence à être un peu fatiguant ...

Windows x64 140.06 MB jdk-7u79-windows-x64.exe

Installation du "Java SE Development Kit"

Poursuite de l'installation de Apache Ant

J'ai ajouter les variable d'environnement :
ANT_HOME = C:\apache-ant-1.9.6\
Et
JAVA_HOME = C:\Program Files\Java\jdk1.8.0_40\
(j'avais un jse déjà installé en v1.8 ...)

J'ai configuré le path et donc dans la console j'obtiens :

Exécution de la commande "Ant" dans la console
semble indiquer que tout va bien jusque là ...

Installation de Google USB Driver

Pour Windows, il faut encore installer ça ... Je choisie de passer par Android Studio :

Tool -> Android -> SDK Manager :

Installer Google USB Driver avec Android Studio
Cliquez sur "Apply" :


Configuration de Qt pour Android

Lancez Qt Creator, dans : Outils -> Options ... Choisir Android configurez les paths 
du JDK
de SDK Android
et de NDK Android

Le plus difficile c'est de trouver le NDK ! C'est à dire, de détecter où "android-ndk-r10e-windows-x86_64.exe" à bien peu installer le ndk, pour mon cas, c'est là où j'ai téléchargé le .exe dans :
C:\Users\Mabyre\Downloads\android-ndk-r10e ....

Ce qui donne pour les paths de Android sous Qt Creator :


Vérifier l'installation du SDK et du NDK Android pour Qt

Je vérifie mon installation, en essayant de créer ma première application Android avec Qt :

Fichier -> Nouveau projet puis Application :


Mon Application crée avec Qt Creator est supportée par Android Desktop
Puis dans le choix des Kits :


Par la suite, c'est plus compliqué, il faut un "Android Emulator" qui fonctionne :


Je pense que l'on peut résoudre le problème avec le SDK Manager, quelque part j'ai vu dans les "Extras" un accélérateur :



Mais cela ne suffit pas ! Il faut exécuter un installeur.

http://stackoverflow.com/questions/26355645/error-in-launching-avd

Mais au moment d'exécuter :

C:\Users\Mabyre\AppData\Local\Android\sdk\extras\intel\Hardware_Accelerated_Execution_Manager\intelhaxm-android.exe



Boom !

Bon, si x86 a besoin d'accélération et que je ne peux pas la configurer, je créé un AVD en cliquant sur "Start AVD Manager", j'utilise armeabi-v7a comme CPU (pas besoin de VT !), je créé ma première application Qt et je lance l'exécution :

Avant, j'ai encore une erreur a résoudre :
Qt Android “install_target error 1”

Je vous laisse lire la page suivante :
https://openclassrooms.com/forum/sujet/qt-android-install-target-error-1

Il ne faut pas d'espace dans le chemin d'accès au projet ... !!? En 2015 ??? incroyable, un outil qui ne sait pas résoudre un espace dans un path ... bref.

Après 5 bonnes minutes d'exécution, de compilation de déploiement de chargement , enfin :

Mon Application Qt/C++ émulée dans un Androïde Device à base d'ARM - Rien que cela !

Qt pour Android - Conclusion

Ce n'est vraiment pas simple, il faut une bonne demi-journée pour installer, configurer et trouver tous les pièges pour que cela fonctionne ...

Je vais vous livrer mon sentiment, après moulte-moulte configurations essais, compilation, etc etc ... le développement pour Android sous Qt c'est pas gagné ! Plantages, crashs et une lenteur d'exécution me font penser que cela ne va pas être de la tarte ...