Dossiers

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

Par Didier, le

QT en quelques mots



QT : créer des applications Mac, PC et Linux sans changer le code source !
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 !

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


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

Mon premier programme



Nous allons créer un programme assez simple, puisqu'il vous permet tout simplement d'écrireMac4Ever ! 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 :

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

Voici à quoi ressemble un main typique de QT :

#include qapplication.h
#include mafenetre.h
int main(int argc, char* argv ) {
QApplication a( argc, argv );
mafenetre win;
a.setMainWidget(win);
return a.exec();
}


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 :

#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"

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


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)

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


• 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 :

$$CODE0$$

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.

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


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

Mogo pro : Emmenez-le partout chez vous et ailleurs

Mogo pro : Emmenez-le partout chez vous et ailleurs

Vous tenez dans votre main un véritable concentré de technologies pour diffuser des images 1080P partout (jusqu’à 100 pouces), sans aucune restriction. L’image est très grande, nette, lumineuse et sait se régler toute seule, quel que soit les conditions. Même le son qui sort de cette petite boîte est exceptionnel grâce à la philosophie Gold Ear et ses haut-parleurs Harman -Kardon. Il sait aussi fonctionner en totale autonomie ave sa batterie et ses 18Gb de mémoire permettant de stocker jusque 10 films et 1000 chansons.

Dernières publications

Le système ARVR d'Apple s'appellerait xrOS

Le système ARVR d'Apple s'appellerait xrOS

Ce matin, le casque de réalité mixte d'Apple réapparait sur le terrain des rumeurs avec des indications sur le nom du prochain système.
Mac Studio dès 2069€ (-230€), MacBook Air M1 dès 959€, MacBook Air M2 dès 1349€, iMac M1 dès 1229€

Mac Studio dès 2069€ (-230€), MacBook Air M1 dès 959€, MacBook Air M2 dès 1349€, iMac M1 dès 1229€

Une quatrième bêta pour iOS/iPadOS/tvOS 16.2, watchOS 9.2 et macOS Ventura 13.1

Une quatrième bêta pour iOS/iPadOS/tvOS 16.2, watchOS 9.2 et macOS Ventura 13.1

Apple propose ce soir les quatrièmes bêtas d'iOS 16.2, iPadOS 16.2, watchOS 9.2 et macOS Ventura 13.1 pour les développeurs
1
iCloud Mail bat de l'aile ce soir chez certains utilisateurs

iCloud Mail bat de l'aile ce soir chez certains utilisateurs

Un Apple I en état de marche numéroté par Steve Jobs proposé aux enchères à 241 000$

Un Apple I en état de marche numéroté par Steve Jobs proposé aux enchères à 241 000$

1
Un iPhone 14 Pro Max relooké avec un écran incurvé "façon Samsung"

Un iPhone 14 Pro Max relooké avec un écran incurvé "façon Samsung"

2

T-RackS d'IK Multimedia désormais natif sur les Mac Apple Silicon (+The Farm Stone Room)

T-RackS d'IK Multimedia désormais natif sur les Mac Apple Silicon (+The Farm Stone Room)

 App Store : pour Noël, il sera toujours possible de faire valider les apps

App Store : pour Noël, il sera toujours possible de faire valider les apps

A son tour, le CEO de Spotify attaque Apple sur Twitter

A son tour, le CEO de Spotify attaque Apple sur Twitter

6
1Password retient les mots de passe pour une connexion via un compte tiers

1Password retient les mots de passe pour une connexion via un compte tiers

Un joli casque gaming USB/mini jack haut en couleur chez Teufel

Un joli casque gaming USB/mini jack haut en couleur chez Teufel

Elon Musk espère implanter ses puces dans le cerveau humain "dans les 6 mois"

Elon Musk espère implanter ses puces dans le cerveau humain "dans les 6 mois"

Depuis de nombreuses années, Elon Musk est connu pour ses idées extraordinaires. Parmi elles, se trouve le projet Neuralink, qui permettrait de relier le cerveau humain à une machine.
15
Le plugin Nembrini  émulant une pédale wha-wha est gratuit sur Mac et iPhone

Le plugin Nembrini émulant une pédale wha-wha est gratuit sur Mac et iPhone

La firme spécialisée dans l'émulation fondée par Igor Nembrini il y a plus de 10 ans propose gratuitement son plugin émulant une pédale wha-wha.
Apple Watch : comment avoir une meilleure batterie ?

Apple Watch : comment avoir une meilleure batterie ?

3
Otterbox et Zens : de nouveaux chargeurs multiples et des batteries compatibles Magsafe

Otterbox et Zens : de nouveaux chargeurs multiples et des batteries compatibles Magsafe

2
Des données utilisateur de LastPass dans la nature

Des données utilisateur de LastPass dans la nature

4

Serez-vous tenté par ce clavier conçu avec des LEGO ?

Serez-vous tenté par ce clavier conçu avec des LEGO ?

Parmi les nombreux projets déposés sur KickStarter, on en trouve de nombreux originaux, dont celui -particulièrement fun- de la société MelGeek.
MacBook Pro 16" dès 2359€ (-390€), MacBook Pro 14" 1 To dès 2499€, leur prix le plus bas

MacBook Pro 16" dès 2359€ (-390€), MacBook Pro 14" 1 To dès 2499€, leur prix le plus bas

Une promo permet de s'offrir un MacBook Pro à un tarif intéressant, et ce d'autant plus que les prochains modèles pourraient être repoussés en 2023 et voir leur tarif augmenter substantiellement.
Un imprimé Leopard pour les Beats Flex Edition Wacko Maria

Un imprimé Leopard pour les Beats Flex Edition Wacko Maria

Des puces en 4nm dès l'ouverture de l'usine TSMC aux USA (pour être ensuite envoyées en Chine ?)

Des puces en 4nm dès l'ouverture de l'usine TSMC aux USA (pour être ensuite envoyées en Chine ?)

5

Commentaires

Connectez-vous/créez un compte pour réagir à cet article !
Oops, vous n'êtes pas connecté

Pour évaluer un commentaire sur Mac4Ever, vous devez être connecté avec votre compte utilisateur.

35 commentaires
Connectez-vous/créez un compte pour réagir à cet article !
Oops, vous n'êtes pas connecté

Pour évaluer un commentaire sur Mac4Ever, vous devez être connecté avec votre compte utilisateur.

Suivez-nous !