QT : créer des applications Mac, PC et Linux sans changer le code source !

Par Didier, le

QT en quelques mots



[imgv3="466_01-06-2004_34487.png" align="right"]Les initiales QT évoquent chez les MacUsers que nous sommes, une référence à QuickTime. Pourtant, QT n'a rien à voir avec Apple, puisqu'il s'agit en réalité d'un environnement de programmation multi-plateforme, créé par la société TrollTech. Il vous permet donc de créer avec le même code source, des applications portables aussi bien pour Linux, Windows que pour Mac.

Niveau requis pour cet article



Sachez tout d'abord qu'avant de se mettre à QT, il faudra maîtriser le C/C++. Le niveau requis n'est pas très élevé, mais vous vous devez tout de même avoir en tête un certain nombre de concepts de programmation orientée objet, d'héritage etc. Nous avons d'ailleurs publié quelques tutoriels à ce sujet, si vous fouillez un peu sur Mac4Ever ;--)

Comment ça marche ?



Vous savez tous qu'une application PC (compilée sur Pentium/AMD) ne fonctionne pas sur Mac. Ceci est une évidence, car les applications sont crées à partir du code source, que l'on compile pour un processeur et un système d'exploitation bien précis. Dans QT, seul le code source est donc portable, il vous faudra bien évidemment recompiler votre programme pour chaque environnement, mais sans rien réécrire !

[imgv3="466_01-06-2004_78898.jpg"]

Quels sont les outils disponibles ?



QT est vraiment très complet. Il se compose d'un éditeur graphique, pour créer vos fenêtres et vos classes (exactement comme pour Interface Builder d'Apple), d'un compilateur spécifique, et de librairies. Ceci étant les principaux composants de QT. Vous trouverez en périphérie, d'autres outils (des compilateurs spécifiques etc) et des exemples prêts à compiler, très utiles pour débuter.

Téléchargement et Installation



La version 3.x de QT est disponible en cliquant ici. Sachez par ailleurs que les versions Unix sont en général bien plus en avance que les versions Windows, et en particulier pour les versions gratuites, celles que nous allons utiliser. (A l'heure où je vous parle, on a largement atteint la version 3 sur Mac alors que sous Windows, c'est pour le moment la version 2 qui est gratuite).

Une fois le .tar téléchargé, sachez que l'installation n'est pas pour autant terminée. Vous trouverez dans le dossier, une fois décompressé, un fichier standard Install.txt, qu'il faudra donc placer dans Text Edit ou autre, et donc exécuter les indications scrupuleusement.

Le procédure est décrite assez clairement, en anglais cependant, et je ne m'attarderait pas trop sur ce point car il n'y a pas tellement de difficultés.

Petit détail assez utile, on vous demande de créer des variables d'environnement en milieu d'installation. Cela consiste à créer un fichier .profile (ou .login, suivant votre terminal) dans lequel vous collerez les procédures données dans le fichier d'installation. Faites attention, un tel fichier ne peut être créé à partir de TextEdit, je vous conseille d'utiliser BBEdit. D'autre part, le système refusera peut-être d'enregistrer le nom .profile. Appelez le tout simplement "profile" et vous le renommerez avec le terminal. (mv profile .profile)

Le reste de l'installation est assez facile mais prendra un certain temps, car QTDesigner, ainsi que tous les exemples fournis, ne sont pas compilés. Il y en a pour une bonne heure si vous avez un petit G4, 20mn avec un G5 ou un G4 Dual.

Dernier point, lors de mes tests, j'ai eu quelques soucis avec les librairies QT, dont l'installation crée des alias dans le dossier "lib", et pour je ne sais quelle raison, ne fonctionnent pas toujours. Je vous conseille, si vous avez le même bug, de placer directement une copie de ces librairies dans le dossier "lib". Mais a priori, vous n'avez pas besoin de cela...

C++ et langage QT



QT n'est pas seulement un système de librairies graphiques, c'est avant tout un véritable environnement de programmation, comme cocoa par exemple. Je veux dire par là que, même si il est possible, et d'ailleurs conseillé pour certaines fonctions, de programmer en C++, sachez que QT possède ses propres méthodes, constructeurs etc. En clair, au lieu de créer un char[ par exemple, vous aurez tout intérêt à utiliser les ]q[QString]/q[, bien plus adaptées pour interagir avec l'interface graphique. Mais ceci n'est qu'un exemple, il existe aussi les QLists, QFile, QFont etc.

Toute la documentation sur les définitions des headers et des fonctions est incluse, et au format html. C'est clair, vraiment bien documenté et complet au possible.

]st[Mon premier programme]/st[

Nous allons créer un programme assez simple, puisqu'il vous permet tout simplement d'écrire]q[Mac4Ever !]/q[ dans une fenêtre. Ce programme sera écrit entièrement à la main, sans utiliser QTDesigner. C'est plus simple pour débuter.

Pour cela, nous allons définir trois fichiers :

• ]st[Main.cpp]/st[, le fichier principal de l'application, qui sera chargé de lancer la fenêtre.
• ]st[mafenetre.cpp]/st[ qui gérera donc les composants de ladite fenêtre.
• ]st[mafenetre.h]/st[, le fichier d'en-tête des fonctions et des déclarations de ]st[mafenetre.cpp]/st[

Voici à quoi ressemble un ]q[main]/q[ typique de QT :

]i[
#include qapplication.h
#include "mafenetre.h"

int main( int argc, char ][argv )
{
QApplication a( argc, argv );
mafenetre win;
a.setMainWidget(&win);
return a.exec();
}
]/i[

Je ne détaille pas tout, mais cette fonction principale se contente de déclarer une nouvelle fenêtre principale (win), une nouvelle application (a) et de l'ouvrir. (a.exec(); ouvre la fenêtre)

Maintenant, nous allons placer un seul et unique composant sur la fenêtre, à savoir un QLineEdit (un champ de texte si vous voulez).

Voici à quoi le fichier mafenetre.h va ressembler :

]i[
#ifndef mafenetre_H
#define mafenetre_H

#include qwidget.h
#include qlineedit.h

class mafenetre : public QWidget
{
Q_OBJECT
public:
mafenetre();
private:
QLineEdit ]le1;
private slots :
void affiche();
};
#endif



Là aussi, rien de bien complexe :
- votre fenêtre est une fenêtre dérivée de QWidget, qui est la fenêtre mère en QT.
- Q_Object est en fait, simplement une macro qui permet de traduire le language objet de QT en C++
- en privé, on définit un pointeur sur un élément de type QLineEdit
- la fonction affichetexte() affichera "Mac4Ever !" sur votre fenêtre lorsque vous cliquerez sur le bouton.
- n'oubliez pas d'inclure les bon headers ! (qlineedit.h si vous utilisez des QLineEdit etc.)

Passons maintenant à l'implémentation, soit le fichier

fenetre.cpp

:




#include "mafenetre.h"
#include qpushbutton.h
#include qlabel.h

// on définit maintenant le contructeur de la fenêtre, à savoir sa position
//sa taille etc.. On lui ajoute aussi un QPushButton et un QLabel (du texte)

mafenetre::mafenetre()
{
setGeometry(100,100,300,160);
QLabel [la;
la=new QLabel("Le texte va s'afficher ici : ",this);
la->setFixedSize(200,20);
la->move(50,20);
le1=new QLineEdit(this);
le1->setFixedSize(200,20);
le1->move(50,50);

QPushButton ] b=new QPushButton("Affiche",this);
b->setFixedSize(100,40);
b->move(80,80);
connect(b, SIGNAL(clicked()), SLOT(affiche()) );
show();
}
void mafenetre::affiche()
{
QString s; s="Mac4Ever";
le1->setText(s);
}


Vous avez donc maintenant 3 fichiers distincts, et nous allons procéder à la compilation. Pour cela, dans le terminal, tapez :

cd votredossierduprogramme


[validez]

qmake -project


[validez]

qmake


[validez]

make


[validez]

Cette procédure crée 3 choses :
- le fichier votreprogramme.pro, qui est un peu le "sommaire" de votre programme. (Le .xcode si vous voulez !)
- le fichier makefile, qui contient les instructions de compilation
- enfin votre application, créé en tapant "make"

[imgv3="466_01-06-2004_43699.jpg"]

C'est à ce moment là qu'il peut y avoir quelques erreurs, à vous de les corriger ;-)

Je vous conseille de travailler avec BBEdit, qui est disponible en FreeWare sur versiontracker...

QTDesigner, comment ça marche ?



Nous avons créé un fichier mafenetre.cpp et .h à la main. Sachez que cette procédure fastidieuse peut être exécutée avec un éditeur graphique (QTDesigner), bien plus adapté. Le principe est le suivant :

• On crée une nouvelle fenêtre avec QTDesigner (exemple : mafenetreGUI)

[imgv3="466_01-06-2004_98788.jpg"]

• On connecte directement dans QTDesigner les boutons aux slots prédéfinis (c'est à dire à vos fonctions, que vous définirez plus tard, par héritage, mais on y reviendra)
• on enregistre le fichier mafenetreGUI.ui et on lance le terminal
• les fichiers ".ui" ne sont pas directement exécutables, car ils sont en XML et non en C++. Vous devez les transformer en fichier C++ pour les intégrer à votre programme.(même si la version 3 prend en charge directement le XML dans le terminal, ce n'est pas encore le cas sous Windows en version 2... Je vous conseille de le faire) Pour cela, vous appelez uic, qui est dans votre dossier QT. La procédure est la suivante :

/Developer/qt/bin/uic -o mafenetreGUI.h mafenetreGUI.ui
/Developer/qt/bin/uic -i mafenetreGUI.h -o mafenetreGUI.cpp mafenetreGUI.ui



Maintenant, vous avez donc créé l'interface et les slots. Il ne reste plus qu'à programmer

mafenetre.cpp

et mafenetre.h, Ici, au lieu de la faire hériter de QWidget, vous la faites hériter de mafenetreGUI ! C'est tout simple, et vous n'avez donc plus à donner les dimensions, à créer les boutons, à les déplacer etc... Simplement, à implémenter vos fonctions. Regardez bien les exemples fournis, ils sont très explicites.

Le prix de la portabilité



Petite détail qui a son importance : vous ne pouvez exécuter vos applications que si vous avez les 2 bibliothèques de QT installées sur votre machine. Si vous voulez donner vos applications à vos amis, il faut soit leur faire installer ces librairies, soit faire un script qui le fait au lancement du programme ou indépendamment.

[imgv3="466_01-06-2004_87889.jpg"]

Il faut avouer que pour un petit programme de quelques centaines de Ko, c'est assez contraignant de devoir fournir des libs de 5MO. C'est moins gênant pour de gros projets, principal intérêt de QT. Mais c'est le prix de la portabilité ;--)

Un exemple, Photoshop Album a été créé en QT ! Comme quoi, ce n'est pas simplement un langage éducatif, mais cela peut permettre de concevoir de réels projets !

Conclusion



Voilà donc un aperçu de QT. Je ne suis pas trop entré dans les détails, car on pourrait en écrire des livres entiers. Pour l'avoir utilisé pendant 6 mois de façon assez intensive, je peux vous dire que c'est absolument génial de créer des applications 100% multi-plateformes, sans avoir à retoucher le code et l'adapter pour chaque OS/CPU. Inversement, questions simplicité d'utilisation, il va sans dire qu'il y a quelques astuces à prendre et qu'on ne retrouve pas non plus la légèreté des Developper Tools. Le but n'est toutefois pas le même, XCode étant évidemment principalement destiné à la programmation pour Mac OS X uniquement.

Notons que sur PC, il est possible de compiler avec VisualC++ alors que sur Mac, on attend toujours le plug-in pour XCode... Cela permet surtout plus de confort et évidemment, tout le débuggage facilité...

Réactions

35 commentaires
Connectez-vous/créez un compte pour réagir à cet article !

Suivez-nous !

Guide d'achat

A voir Mac iOS Autre

MacBook Air

Acheter
Le MacBook Air a été mis à jour en novembre 2020 avec le tout nouveau processeur M1 Made in Cupertino. S'il reprend le design de la génération précédente, la puce permet d'atteindre des performances, selon Apple, 3,5 fois supérieures pour le CPU et 5 fois supérieures pour la partie graphique intégrée. Cette nouvelle version est bien plus intéressante, n'hésitez pas à voir nos tests !

La note Mac4Ever

8/10

Notre conseil d'achat

Acheter maintenant

MacBook Pro 13"

Acheter
Le MacBook Pro 13" a été mis à jour le 10 novembre 2020 avec le nouveau processeur M1. Il faudra cependant bien réfléchir à un tel achat, la puissance est bien au rendez-vous (regardez nos tests !), mais un modèle 14" est envisagé pour 2021.

La note Mac4Ever

8/10

Notre conseil d'achat

Acheter maintenant

MacBook Pro 14"

Acheter
Apple dévoile enfin un modèle inédit de 14,2" avec un tout nouveau processeur : le M1 Pro. Mais ce nouveau modèle propose de nombreuses nouveautés ou évolutions : un écran Liquid Retina XDR, un clavier totalement revu avec la disparition de la Touch Bar et le retour des touches de fonction, jusqu'à 32Go de mémoire et du stockage plus généreux (jusqu'à 8To).

Notre conseil d'achat

Acheter maintenant

MacBook Pro 16"

Acheter
Apple dévoile enfin un modèle 16,2" avec deux tout nouveaux processeurs : le M1 Pro ou le M1 Max. Mais ce nouveau modèle propose de nombreuses nouveautés ou évolutions : un écran Liquid Retina XDR, grosse batterie de 100Wh, clavier totalement revu avec la disparition de la Touch Bar et le retour des touches de fonction, jusqu'à 64Go de mémoire et du stockage plus généreux (jusqu'à 8To).

Notre conseil d'achat

Acheter maintenant

iMac M1

Acheter
Il aura fallu attendre presque 10 ans pour que les équipes de Jony Ive se décident enfin à offrir une nouvelle robe, à ce qui était autrefois la star de la gamme Apple : l'iMac. Design totalement revu, finesse à tous les étages, alimentation déportée, écran plus grand, Touch ID... Apple a totalement repensé son tout-en-un tout en conservant ce qui en a fait son succès : une machine reste simple à utiliser, peu encombrante et adaptée à de nombreux usages.

La note Mac4Ever

8/10

Notre conseil d'achat

Acheter maintenant

iMac Pro

Attendre
L'iMac Pro est actuellement le Mac le plus puissant du marché, même s'il a déjà 2 bonnes années d'existence. Apple a rajouté une petite option GPU Vega 64X et 256Go de RAM courant mars 2019, mais rien de bien folichon. N'hésitez pas à consulter nos tests et nos vidéos avant de vous décider ! A noter qu'Apple va sortir un Mac Pro fin 2019, donc si vous n'êtes pas trop pressé, il sera + modulaire...

La note Mac4Ever

3/10

Notre conseil d'achat

Attendre avant d'acheter

Mac Mini

Acheter
Le Mac mini a été mis à jour le 10 novembre 2020 et a reçu le tout nouveau processeur M1. Il est le moins cher de la bande, et sans doute le plus polyvalent avec sa prise HDMI, ses nombreux ports et son format compact. Il s'agit aussi du seul modèle de bureau, conçu pour être raccordé à des écrans externes.

La note Mac4Ever

8/10

Notre conseil d'achat

Acheter maintenant

Mac Pro

Acheter
Le nouveau Mac Pro est enfin là ! Certes, sont prix est élevé, mais la cible est très claire : les ultra-pro. Vous pouvez acheter sans crainte, (presque) tout est modifiable dans le temps et les modules MPX sont proposés à part par Apple.

Notre conseil d'achat

Acheter maintenant

iPhone SE

Acheter
489€ pour cet iPhone 8 revisité avec puce A13, WiFi 6 et de meilleures capacités photo (mode portrait etc.). C'est le bon-plan de 2020, même si les fans des grands écrans, de Face ID et d'une bonne autonomie préféreront le XR !

La note Mac4Ever

8/10

Notre conseil d'achat

Acheter maintenant

iPhone 11

Acheter
L'iPhone 11 prends la suite de l'iPhone XR, mais apporte quelques nouveautés intéressantes en photo/vidéo (voir nos tests/vidéos). Il ne sera pas mis à jour avant septembre 2020... avec l'arrivée de la 5G !

Notre conseil d'achat

Acheter maintenant

iPhone 12

Acheter
L'iPhone 12 prends la suite de l'iPhone 11, mais apporte quelques nouveautés intéressantes en photo/vidéo (voir nos tests/vidéos) et surtout la 5G. Il ne sera pas mis à jour avant septembre 2021.

La note Mac4Ever

9/10

Notre conseil d'achat

Acheter maintenant

iPhone 13

Acheter
L'iPhone 13 prends la suite de l'iPhone 12, sans prise de risque, Apple offre quand-même quelques fonctionnalités intéressantes, en terme d'autonomie, de stockage, ou encore d'écran, même si cette année, c'est surtout la version « Pro » qui progresse le plus. Mais l'iPhone est un produit mature, complet et toujours l'une des références du marché.

La note Mac4Ever

9/10

Notre conseil d'achat

Acheter maintenant

iPhone 13 Pro

Acheter
L'iPhone 13 prends la suite de l'iPhone 12, sans prise de risque, Apple offre quand-même quelques fonctionnalités intéressantes, en terme d'autonomie, de stockage, ou encore d'écran, même si cette année, c'est surtout la version « Pro » qui progresse le plus. Mais l'iPhone est un produit mature, complet et toujours l'une des références du marché.

La note Mac4Ever

9/10

Notre conseil d'achat

Acheter maintenant

iPad mini 6

Acheter
Nouveau design (hérité de l'iPad Air 4 et des iPad Pro), nouveaux capteurs photo, nouveau format d'écran, son stéréo, USB C... Les nouveautés ne manquent pas pour cette cuvée 2021, qui tranche avec le moule vieillissant et pourtant réutilisé depuis des années par Apple. Mais à 559€ en 64Go, la tablette vient gentiment taquiner les tarifs de ses aînées, si bien que son positionnement prend tout de suite des allure de petites tablettes professionnelles

La note Mac4Ever

8/10

Notre conseil d'achat

Acheter maintenant

iPad Air

Acheter
Après avoir fait son grand retour en 2019, l'iPad Air revient avec une 4e déclinaison. On pourra découvrir un processeur A14 Bionic, gravé en 5nm -une première mondiale. L'écran de10.9" offre une résolution de 2 360 x 1 640 pixels à 264 pixels par pouce (ppp). Si tout en bas, on a droit enfin à un connecteur USB-C, avec une charge à 20W, tout en haut se trouve TouchID sur le bouton de démarrage.

Notre conseil d'achat

Acheter maintenant

iPad 9

Acheter
La nouvelle place de l'iPad 9 est plus compliquée à tenir cette année, pour cette tablette d'entrée de gamme, qui évolue timidement. Pour autant, elle ne manque pas d'atouts, comme le prix, l'écran large et lumineux, la prise en charge du Pencil, l'autonomie très correcte, son capteur frontal Ultra Grand-Angle et le chargeur USB C fourni. Le tout dans un design tout de même très daté.

La note Mac4Ever

7/10

Notre conseil d'achat

Acheter maintenant

iPad Pro M1

Acheter
5G, Thunderbolt, puce M1, 16Go de RAM, 2To de stockage, écran HDR... L'iPad Pro M1 n'a rien à envier à un MacBook Pro 13" ou presque ! Hormis macOS, c'est même le Mac qui pourrait être un peu jaloux, face à un écran tactile de cette qualité, de la connectivité au top et un accès aux accessoires les plus rapides du marché.

La note Mac4Ever

9/10

Notre conseil d'achat

Acheter maintenant

Apple Watch 3

Attention
L'Apple Watch Series 3 reste au catalogue (mais peut-être plus pour longtemps ?) et constitue une bonne alternative à la Series 5, même si son écran est un peu plus petit et qu'elle ne propose pas certaines fonctionnalités inédites, comme l'ECG, l'écran allumé en permanence ou la détection de chute, propres à la nouvelle version. Pesez bien le pour et le contre, sachant que ces montres connectées évoluent beaucoup d'une année sur l'autre et son rapidement obsolètes (la première Apple Watch ne prend pas en charge watchOS 5/6 par exemple, alors qu'elle ne date que de 2015)

La note Mac4Ever

4/10

Notre conseil d'achat

Acheter si nécessaire

AirTag

Acheter
L'AirTag est avant-tout destiné à ne pas égarer ses affaires, mais Apple ne veut pas parler de traqueur, respect de la vie privée oblige. Pourtant, ces petites balises bluetooth fonctionnent très bien pour suivre certaines personnes. Avec sa simplicité d'usage, la petite balise bénéficie d'un vrai réseau Bluetooth mondial et d'une localisation proche très efficace.

La note Mac4Ever

8/10

Notre conseil d'achat

Acheter maintenant

Apple Watch 7

Acheter
la nouvelle Apple Watch Series 7 propose des bordures plus fines, une certification IP6X pour la poussière et WR50 pour l'eau, un écran plus grand et un clavier AZERTY avec QuickPath permettant de glisser le doigt de lettre en lettre. L'écran est 70% plus lumineux en veille, avec une dalle plus résistante, et une autonomie similaire aux générations précédentes. Disponible en 41 et 45 mm, elle n'affiche pas augmentation de tarif.

Notre conseil d'achat

Acheter maintenant

Apple TV HD

Attendre
L'Apple TV 2015 est sortie fin 2015 et Apple le garde au catalogue malgré l'arrivée de la version 4k. Avec en prime, une petite baisse de prix ! Si vous n'avez pas de TV 4k, cela reste une bonne affaire.

Notre conseil d'achat

Attendre avant d'acheter

Apple TV 4K

Acheter
Apple met à jour sa petite boite avec quelques petites nouveautés intéressantes, comme une puce A12, un retour eARC, du HDMI 2.1 ou encore une toute nouvelle télécommande ! Et d'ailleurs, si c'était elle, la star de cette année ?

La note Mac4Ever

8/10

Notre conseil d'achat

Acheter maintenant

iPod touch

Acheter
Après une petite mise à jour en juillet 2015 (même processeur que l'iPhone 6 et un capteur de 8MP), Apple a enfin daigné mettre à jour son baladeur en 2019. Mais les nouveautés sont maigres : processeur A10 (iPhone 7) et 256Go de stockage au maximum. Pour le reste, rien ne change, sauf le prix, qui prend 20€ en entrée de gamme et qui atteint les 469€ pour le haut de gamme ! Assez décevant pour un produit dont le design et les caractéristiques nous ramènent presque 4 ans en arrière...

Notre conseil d'achat

Acheter maintenant
Consulter le guide

A lire

Voir tous les dossiers

Refurb Store

Découvrir toutes les offres

Dernières vidéos

Voir toutes les videos