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 ...

lundi 22 juin 2015

Qt - Using Style Sheet

Voici le code Qt/C++ minimum pour bien commencer avec les "style sheet" de Qt. La documentation de Qt est très jolie mais pas très pratique au sens utilisable du terme, il y a très peu de petits exemples concrets.

Ce que je souhaite faire :
  • créer ma feuille de style 
  • l'appliquer à mon projet
Je prends une feuille de style toute faite, je pourrais la particulariser à loisir par la suite. J'ai trouvé "coffee.qss" dans l'exemple "stylesheet".

Références

Sur le site Developpez.com, niveau avancé, pour tout savoir sur les styles Qt.

Ajoutez la feuille de styles dans les ressources .qrc

Il faut vous arranger pour obtenir l'arborescence suivante dans votre projet :

Qt - Feuilles de style
Ajouter un fichier de ressource, créez le répertoire qss, y insérer la feuille de style "coffee.qss" puis faire boutons droit sur "mysstylesheet.qrc" et enfin : Ajouter fichier existant.

Appliquer "coffee.qss" dans votre projet

Il faut écrire un peu de code C++ pour appliquer cette feuille de style. Dans le projet exemple "stylesheet" il y a un sélecteur de css avec une dropbox et tout un bordel que l'on ne souhaite pas. 

Dans mainwindow.cpp on va ajouter le loader de style sheet :

void MainWindow::loadStyleSheet()
{
    QFile file(":/qss/coffee.qss");
    file.open(QFile::ReadOnly);
    QString styleSheet = QString::fromLatin1(file.readAll());

    qApp->setStyleSheet(styleSheet);
}

Il suffit maintenant d'appeler cette fonction dans la construction de l'UI :

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //
    // Load the style sheet called "coffe.qss"
    // in "qss" directory
    //
    loadStyleSheet();
}

Le tour est joué.

Lancer l'exécution du projet QtStyleSheet

A l'exécution du projet, la feuille de style est appliquée :

Qt StyleSheet Projet
Voici le code à télécharger : Download

Et si vous cherchez des stylesheet gratuites suivez le lien : Ici
N'hésitez pas à cliquer, partager, c'est fun !

mercredi 4 mars 2015

Qt - Sample Application with Visual Studio Add-In for Qt 5

Vous pouvez télécharger l'Add-In de Visual Studio pour Qt 5 à la page suivante : Qt io download en prenant soin de cliquer sur le bouton "View All download" ;). Vous l'avez installé bien sûr et vous allez donc pouvoir créer votre premier projet Qt avec Visual Studio, si si c'est possible.

Je souhaite donc créer un premier projet avec l'Add-In VS pour Qt5 :

Création d'un projet Visual Studio avec l'Add-in Qt 5
On vérifie ainsi que l'add-in est bien installé car on voit l'image du template pour Qt Application. On clique sur Ok. On entre dans le wizard de création du projet :

Wizard de création d'un projet Qt5 avec Visual Studio
Je clique sur Project Settings, et BOUM !!!

Qt5 - Project Settings - Erreur dans le script de la page
J'ai les trois cases cochées : Core, GUI, Widgets, je pense que c'est le projet le plus simple, le meilleur pour tenter de commencer.

Je regarde l'onglet "Generated Class" :

Add-In Qt5 pour Visual Studio - Onglet Generated Class
Je clique sur finish pour créer mon template d'application, et BOUM !!! :

Add-in Qt5 pour Visual Studio - Unable to find Qt Build!
Boum, boum, et boum avec Qt c'est toujours BOUM !

Solution - Unable to find a Qt Build !

Il faut builder Qt, rien de moins ... <:(  x( Grrrrr. Non ce n'est plus vrai aujourd'hui. Nous ne sommes n'est plus obligé de compilé les sources de Qt car il est livré avec une build pour chaque plateforme.

OUF !

Unable to find a Qt build ! To solve this problem specify a Qt Build!

http://qt-project.org/forums/viewthread/24681
Un menu "Qt" est apparu dans Visual Studio. Allons trouver le path de notre version :

Add-in Visual Studio - Add Qt Version
On clique sur Ok :

Add-in Visual Studio - Add Qt Version - 2
Have Fun !

lundi 2 mars 2015

Qt - Deployer une application - Suite (2)

Vous avez des difficultés à déployer vos applications Qt, c'est normal. Déployer une application Qt est un processus qui demande une connaissance et une complète maîtrise de toute la chaîne de développement. Chaque partie constituante du logiciel doit être compilée et linkée avec les bons éléments correspondants à la plateforme de développement.

Erreurs et Problèmes rencontrés avec MSVC

VCINSTALLDIR is not set

Message :
Warning: Connot find Visual Studio installation directory, VCINSTALLDIR is not set.
Solution :
Aller dans Qt Creator regarder comment la variable d'environnement est configurée.

Déploiement sur Windows 7 (64 bits) - Il manque MSVCR120.dll

Si vous essayez d'exécuter votre .exe sur une plateforme sans Qt et sans environnement de compilation, vous obtenez le messsage suivant : Il manque MSVCR120 sur votre ordinateur :

Qt - Impossible de démarrer le programme
Observez alors le répertoire déploiement de l'application, il y a un petit exécutable en forme d'install : "vcredist_64x.exe". Essayez une installation sur votre plateforme ...

MS Visual C++ 2013 Redistribualble (x64)

Qt Quick - Demos Clock running on deployement plateforme MSVC2013
J'ai également déployé clocks avec MinGW, vous pouvez télécharger l'exe et son environnement d'exécution afin de vérifier si cela fonctionne sur votre plateforme :

clocks-deployed-MinGW.zip

And Have Great Fun !

lundi 16 février 2015

Qt- Déployer une application - Suite (1)

Nous avons vu lors du post précédent, comment tenter de déployer une application rapidement. Mais cela ne fonctionne pas très bien. Nous allons tenter d'aller plus loin. En effet le message suivant :

This application failed to start because it could not load the Qt platform plugin "windows"
n'est pas si facile à corriger. J'ai pensé qu'il s'agissait de copier la dll qwindows.dll dans un répertoire nommé "platforms" mais lorsque je double clique sur mon exécutable ainsi déployé, j'obtiens le résultat d'exécution suivant :

Qt - Déploiement rapide - Résultat d'exécution vide !
ce n'est pas fameux, fameux. L'application est vide ! Rien ne s'affiche.

D'après les explication sur le site Stack Overflow : Application Failed to Start
Il s'agirait de copier le répertoire entier du plugin "plateform" du Kit concerné ...

C'est à dire que, pour une application générée avec le kit MinGW v4.9.1 et déployée, il faudrait copier le répertoire complet :

C:\Qt\5.4\mingw491_32\plugins\platforms
dans le répertoire de déploiement de l'application. Le problème est que cette dll qwindows, se trouve un peu partout, pour chaque Kit de développement mais également dans :

C:\Qt\Tools\QtCreator\bin\plugins\platforms

un vrai bordel ! Je dois y aller ... désolé de vous laisser ainsi mais je reviendrai bientôt torde le cou de ce problème crucial.

En attendant, Have Fun !

Solution dans le Qt Assistant

Je pense qu'il faut poursuivre en lisant la page suivante :

 http://qt.developpez.com/doc/4.7/deployment/

On peut installer et déployer les DLL grâce à l'outil :

http://www.dependencywalker.com/

Et pour terminer, tout se trouve dans le Qt Assistant :

L'aide de Qt le Qt Assistant
Il faut taper "deploy" dans la barre de recherche :

Déployer une Application Qt
Même l'outil Dependency Walker y est référencé ... c'est pour dire ;)

Autre outil : Windows Deployement Tool qui se trouve dans le répertoire de chacun des Kits.
windeployqt [options] [files] ... je vous laisse découvrir.

Déployer une application avec Qt (Suite 2)



Qt- Déployer une application - Introduction

Mon conseil pour déployer une application Qt. C'est tout simple : vous créez un répertoire "Deployed" vous y mettez l'exécutable que vous souhaitez déployer puis vous double-cliquez dessus :

Qt - Déployer une application
Il vous suffit ensuite d'aller chercher les DLLs manquantes correspondantes, pour les copier dans le répertoire "Deployed".

Pour l'exemple clocks.exe on aura copié les DLL :
Qt5Quick.dll
Qt5Qml.dll
Qt5Network.dll
Qt5Gui.dll
Qt5Core.dll
icuin53.dll
icudt53.dll
icuuc53.dll
et bien sûr clocks.exe

D'aucuns diront que ce n'est pas très propre ... et alors ? Ça fonctionne.

Vous aurez certainement d'autres DLLs à copier suivant la plateforme où vous souhaiterez faire fonctionner votre application.

Des DLLs sont également dans :
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\redist
Visual Studio Express 2013
msvcr120.dll
msvcp120.dll

Et encore un truc du type truc et astuce, un peu de magie :

Qt\Qt5.1.1\5.1.1\msvc2012\plugins\platforms

Créer un répertoire "platforms" pour y mettre la qwindowsdll

samedi 14 février 2015

Déplacer un projet Qt dans le répertoire de développement

Vous souhaitez conserver les exemples tels quels et commencer à travailler dans le répertoire de de votre choix.

Donc, je prends le projet Clock au fin fond de l'arborescence C:\Qt\Examples\Qt-5.4\quick\demos\clocks et je le déplace dans mon répertoire de travail. Que va t-il se passer ?

Premier problème : une erreur d'un autre monde dans le répertoire de build :
Une version incompatible existe déjà ...

Vous venez de déplacer le projet et pourtant la compilation s'effectue toujours au même endroit dans : C:\Qt\Examples\Qt-5.4\quick\demos\build-clocks-Desktop_Qt_5_4_0_MSVC2013_OpenGL_64bit-Debug

Oui j'utilise : Qt 5.4 et Visual Studio 2013 ;)

Créer un répertoire de build

Créer un répertoire où vous souhaitez voir le résultat de compilation édition des liens s'enregistrer. Pour ce faire, allez dans "Projets"->Shadow Build :

Créer un répertoire de shadow build
Et pointez vers le répertoire que vous venez de créer.
Cela ne suffit pas ! Il vous faudra :

Placez le fichier shared.h au bon endroit

L'erreur est maintenant : dans le fichier main.cpp avec la directive include :
#include "../../shared/shared.h"
qui fait référence au fichier qui se trouve dans :
C:\Qt\Examples\Qt-5.4\quick\shared\shared.h

Vous pouvez placer une copie de ce fichier au bon endroit et tout fonctionne à nouveau.

vendredi 13 février 2015

Qt - Maintenance tool - Maintenir Qt

La maintenance de Qt s'effectue grâce à l'outil "Qt Maintenance Tool". Cet outil permet énormément de choses. En particulier la gestion des paquets, c'est à dire des différents éléments de Qt que vous avez installés sur votre disque dur, votre plateforme de développement.

Qt Maintenance Tool - Fenêtre principale
Cet outil permet la gestion des versions, des kits de compilation ...

Depuis que j'ai modifier les effet graphiques de ma plateforme de développement, c'est moins beau mais cela va beaucoup plus vite :

Qt Maintenance Tool - Les différents packages
Gros problème de maintenance, le processus se bloque.

J'arrête de jouer avec avec les downloader online :
qt-opensource-windows-x86-1.6.0-7-online.exe et autre
qt-opensource-windows-x86-1.6.0-8-online.exe
d'ailleurs y a combien de versions de ce truc ?!

et je télécharge la version complète pour voir ...