Mac4Ever Refurb Guide d'achat Apple - Des conseils sur toute la gamme Apple Débuter sur Mac
QT : créer des applications Mac, PC et Linux sans changer le code source !
Actu Dossiers Forum Photos/Podcasts Petites Annonces V.I.P.
1125 connectés

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

Le 01/06/2004 à 00h00
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'écrire« Mac4Ever ! » 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 :

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

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

Compiler un programme C++

Les bases du php

chargement des réactions

Réagissez à ce dossier !

Pour réagir directement dans le forum, cliquez ici.
Pour réagir, vous devez être identifié.
Si vous ne possédez pas de compte, créez-en un !
Identifiant :
Mot de passe :
Gras Italique Souligné Image URL Smiley confus Smiley cool Smiley M. Vert Smiley malsain Smiley mort de rire Smiley geek Smiley surpris
Important : soyez concis, courtois et pertinents. (plus d'infos ?) Les messages injurieux et hors sujet seront effacés. En cas de non respect de ces instructions, le compte d'un utilisateur pourra être bloqué sans préavis.
Pour toute erreur dans un article, merci de nous le signaler en nous contactant ici.

Conseils d'achat

  • Macintosh

  • iPhone, iPad & iPod

iMac 27" 5k Indicateur rouge Informations 06/2017 2099 € L'iMac 27" (Retina) a été mis à jour le 5 juin 2017 avec Thunderbolt 3, GPU dédié et puces Kaby-Lake. On attend des modèles Coffee Lake (à 6 coeurs) d'ici le courant du printemps/été 2018.
iMac 21,5" 4k Indicateur rouge Informations 06/2017 1499 € L'iMac 21,5" (Retina) a été mis à jour le 5 juin 2017 avec Thunderbolt 3, GPU dédié et puces Kaby-Lake. On attend des modèles Coffee Lake (à 6 coeurs) d'ici le courant du printemps/été 2018.
Apple TV 4k Indicateur vert Informations 09/2017 199 € L'Apple TV 4k est une petite évolution de l'Apple TV pour les téléviseurs 4k. Il gère le HDR, le HDMI 2a et tous les codecs récents. Si vous avez une télévision OLED 4k, il s'agit du modèle idéal. Son prix est raisonnable par rapport à la version HD, qui reste au catalogue.
iMac Indicateur rouge Informations 06/2017 1299 € L'iMac 21,5" (non Retina) a été mis à jour le 5 juin 2017 avec Thunderbolt 3 et puces Kaby-Lake. On attend des modèles Coffee Lake (à 6 coeurs) d'ici le courant du printemps/été 2018.
iMac Pro Indicateur vert Informations 12/2017 5499 € L'iMac Pro est actuellement le Mac le plus puissant du marché. Il ne sera pas renouvelé avant une bonne année, sauf surprise. N'hésitez pas à consulter nos tests et nos vidéo avant de vous décider ! A noter qu'Apple va sortir un Mac Pro courant 2018 (ou 2019), donc si vous n'êtes pas trop pressé, il sera + modulaire...
Mac Mini Indicateur vert Informations 10/2018 899 € Le Mac mini a été mis à jour fin 2018 avec un tout nouveau CPU à 4 coeurs. Pas de mise à jour prévue avant un moment, vous pouvez acheter sans crainte !
Mac Pro Indicateur rouge Informations 10/2013 3339 € Apple a annoncé un nouveau Mac Pro courant 2018 (voire 2019), plus modulaire et moins fermé que la version actuelle. Dans tous les cas, surtout n'achetez pas les modèles "tube" datant de 2013 et désormais assez dépassés.
MacBook Pro 13" Indicateur vert Informations 07/2018 1499 € Le MacBook Pro 13" a été mis à jour le 12 juillet 2018 avec une nouveauté de taille : on passe de 2 à 4 coeurs, soit un doublement de la puissance CPU ! La partie GPU gagne 15% et le SSD peut grimper à 2To. Si les prix restent inchangés, les options sont toujours facturées très chères... Ces machines ne seront pas renouveler avant mi-2019. N'oubliez pas de regarder du côté du Refurb si votre budget est trop serré !
MacBook Pro 15" Indicateur vert Informations 07/2018 2799 € Le MacBook Pro 15" a été mis à jour le 12 juillet 2018 avec une nouveauté de taille : on passe de 4 à 6 coeurs, soit un bon de performances jamais vu d'une génération à l'autre ! La partie GPU n'évolue pas vraiment mais le SSD peut grimper à 4To. Si les prix restent inchangés, les options sont toujours facturées très chères, presque 8000€ pour le modèle ultime ! Ces machines ne seront pas renouvelées avant mi-2019. N'oubliez pas de regarder du côté du Refurb si votre budget est trop serré !
MacBook Air Indicateur vert Informations 10/2018 1349 € Le MacBook Air a fait son grand retour après 4 ans sans mise à jour ! Vous pouvez acheter sans crainte (mais lisez bien notre test !)
MacBook Indicateur rouge Informations 06/2017 1499 € Le MacBook a été mis à jour le 5 juin 2017, avec peu de nouveautés, en dehors du passage à Kaby-Lake. Difficile de savoir si Apple gardera cette machine au catalogue depuis la sortie du nouveau MacBook Air...
Apple TV 2015 Indicateur vert Informations 10/2015 159 € 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.
Téléchargez nos
applications mobiles
À découvrir sur Mac4Ever
b 1  b 2 
Mon Mac4Ever
Pour participer, vous devez être identifié.
Si vous ne possédez pas de compte, vous pouvez en créer un gratuitement !
Identifiant :
Mot de passe :
Sondage
Allez vous céder au Black Friday ?
2687 votes
app
  • Nouveautés

  • Gratuites

  • Payantes

A propos | Mentions légales | Infos Cookies | Contacts | Emploi | RSS | Apps