Cours Qt Création d une application en 10 étapes

Documents pareils
Warren PAULUS Robin GODEFROID. C++ - Interface Graphique avec Visual Studio 2010

Modéliser ses fenêtres avec Qt Designer

L'architecture MVC avec les widgets complexes

Modéliser ses fenêtres avec Qt Designer

Construction d Interfaces Graphiques

Modifier les propriétés d'un widget

IHM2. Eric Lecolinet - Télécom ParisTech 1. Toolkit graphique Qt Dessin interactif. Machines à états.

Introduction au langage C

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

3IS - Système d'exploitation linux - Programmation système

Une introduction à Java

Programmer en JAVA. par Tama

Programmation système de commandes en C

Introduction à C++ et à wxwidgets

Introduction à l héritage en C++

as Architecture des Systèmes d Information

Cours 6 : Tubes anonymes et nommés

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

INFO-F-105 Language de programmation I Séance VI

AUVRAY Clément (168187) HOMBERGER Alexandre (186897) GLADE. Langages, outils et méthodes pour la programmation avancée Page 1 sur 12

Le prototype de la fonction main()

Le Bureau Graphique (1/2)

Arguments d un programme

Programmation en Java IUT GEII (MC-II1) 1

Les processus. Système L3, /39

Cours 1: Java et les objets

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Programmation système en C/C++

Cours Programmation Système

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Programmation système I Les entrées/sorties

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Java Licence Professionnelle CISII,

Simulation d un système de paiement par carte bancaire

GOL502 Industries de services

Cours de C. Petits secrets du C & programmation avancée. Sébastien Paumier

COMPARAISONDESLANGAGESC, C++, JAVA ET

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

PROGRAMMATION PAR OBJETS

Compression de Données - Algorithme de Huffman Document de Conception

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Plan du cours. Historique du langage Nouveautés de Java 7

DNS Server RPC Interface buffer overflow. Céline COLLUMEAU Nicolas BODIN

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Généralités sur le Langage Java et éléments syntaxiques.

Architecture des ordinateurs

INITIATION AU LANGAGE JAVA

Java Licence Professionnelle CISII,

Programmation Classique en langage C

Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée)

30.avr.10 Présentation miniprojet. 9.mars.10 Cours 3 4.mai.10 Cours C mars.10 Cours 4 11.mai.10 Cours C++ 2

Programmation par les Objets en Java


Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

1. Développement embarqué. André KPOZEHOUE DOMAINES DE COMPETENCES CONNAISSANCES TECHNIQUES

OS Réseaux et Programmation Système - C5

LEs processus coopèrent souvent pour traiter un même problème. Ces

Héritage presque multiple en Java (1/2)

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

ETUDE DE CAS en UML : GESTION DES COMMANDES DE PIECES FABRIQUEES PAR LA SOCIETE C

Classe Interne, Anonyme & Enumération

INTRODUCTION A JAVA. Fichier en langage machine Exécutable


Tutorial pour une application simple

2. Comprendre les définitions de classes

Développement Logiciel

Programmation Réseau SSH et TLS (aka SSL)

Mon premier rpm. 7 juin Avant de commencer RPM URPMI RPMBUILD... 2

Programmation Orientée Objet application au langage Java Version Novembre 2007

Chapitre 10. Les interfaces Comparable et Comparator 1

Derrière toi Une machine virtuelle!

Programmation en C/C++

Langage Java. Classe de première SI

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Programmation C. Apprendre à développer des programmes simples dans le langage C

Dis papa, c est quoi un bus logiciel réparti?

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Programmation client-serveur sockets - RPC

Lier Erlang avec d autres langages de programmation

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

Programme Compte bancaire (code)

Objets et Programmation. origine des langages orientés-objet

Bases Java - Eclipse / Netbeans

TRAVAUX PRATIQUES Programmation Système Langage C / Système UNIX. 2 e année Génie Informatique

Support de cours et TD Programmation Orientée Objet

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Introduction au calcul parallèle avec OpenCL

Programmation MacOSX / ios

Introduction à la programmation concurrente

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Programmation avec des objets : Cours 7. Menu du jour

Corrigé des exercices sur les références

INF 104 (SELC) Introduction au langage C

Travaux Dirigés n 1 : chaînes de caractères

Transcription:

Cours Qt Création d une application en 10 étapes Thierry Vaira IUT Arles tvaira@free.fr v1

Création d une application fenêtre La création de fenêtres personnalisées est réalisée à partir d une nouvelle classe qui hérite de QWidget, QDialog ou QMainWindow : Ensuite, on compose sa fenêtre personnalisée en y intégrant des widgets : tv (IUT Arles) Cours Qt tvaira@free.fr v1 2 / 17

Principes I Un widget qui n est pas intégré dans un widget parent est appelé une fenêtre. tv (IUT Arles) Cours Qt tvaira@free.fr v1 3 / 17

Principes II On va créer cette application simple en 10 étapes! tv (IUT Arles) Cours Qt tvaira@free.fr v1 4 / 17

Étape n 1 : déclaration de la classe MaFenetre // Par héritage ici d un QWidget class MaFenetre : public QWidget Q_OBJECT private: ; public: MaFenetre(QWidget *parent=0); ~MaFenetre(); tv (IUT Arles) Cours Qt tvaira@free.fr v1 5 / 17

Étape n 2 : définition de la classe MaFenetre // Le constructeur : appel du constructeur de la classe mère MaFenetre::MaFenetre(QWidget *parent) : QWidget(parent) setwindowtitle("convertisseur"); // le titre // Le destructeur MaFenetre::~MaFenetre() tv (IUT Arles) Cours Qt tvaira@free.fr v1 6 / 17

Exemple : les widgets de la fenêtre tv (IUT Arles) Cours Qt tvaira@free.fr v1 7 / 17

Étape n 3 : déclaration des widgets de la classe MaFenetre class MaFenetre : public QWidget Q_OBJECT private: QLineEdit *valeur; // par pointeurs QLabel *resultat; QLabel *unite; QComboBox *choixconversion; QPushButton *bconvertir; QPushButton *bquitter; ; public: MaFenetre(QWidget *parent=0); ~MaFenetre(); tv (IUT Arles) Cours Qt tvaira@free.fr v1 8 / 17

Étape n 4 : instanciation des widgets de la classe MaFenetre // Dans le constructeur de la fenêtre MaFenetre::MaFenetre(QWidget *parent) : QWidget(parent) // Mes widgets enfants : valeur = new QLineEdit(this); resultat = new QLabel(this); unite = new QLabel(this); choixconversion = new QComboBox(this); bconvertir = new QPushButton("Convertir", this); bquitter = new QPushButton("Quitter", this); //... tv (IUT Arles) Cours Qt tvaira@free.fr v1 9 / 17

Exemple : le positionnement des widgets dans la fenêtre tv (IUT Arles) Cours Qt tvaira@free.fr v1 10 / 17

Étape n 5 : positionnement des widgets MaFenetre::MaFenetre(QWidget *parent) : QWidget(parent) // Mes widgets enfants : //... // Postionnement par layout : QHBoxLayout *hlayout1 = new QHBoxLayout; QHBoxLayout *hlayout2 = new QHBoxLayout; QVBoxLayout *mainlayout = new QVBoxLayout; hlayout1->addwidget(valeur); hlayout1->addwidget(choixconversion); hlayout1->addwidget(resultat); hlayout1->addwidget(unite); hlayout2->addwidget(bconvertir); hlayout2->addwidget(bquitter); mainlayout->addlayout(hlayout1); mainlayout->addlayout(hlayout2); setlayout(mainlayout); tv (IUT Arles) Cours Qt tvaira@free.fr v1 11 / 17

Étape n 6 : initialisation des widgets // Dans le constructeur de la fenêtre MaFenetre::MaFenetre(QWidget *parent) : QWidget(parent) // Mes widgets enfants : //... // Postionnement par layout : //... // Initialisation des widgets : valeur->clear(); choixconversion->additem("celcius -> Farenheit"); choixconversion->additem("farenheit -> Celcius"); resultat->settext(qstring::fromutf8("--.--")); unite->settext(qstring::fromutf8(" F")); tv (IUT Arles) Cours Qt tvaira@free.fr v1 12 / 17

Exemple : la connexion des signaux / slots tv (IUT Arles) Cours Qt tvaira@free.fr v1 13 / 17

Étape n 7 : déclaration des sgnaux et des slots class MaFenetre : public QWidget Q_OBJECT private: //... public: MaFenetre(QWidget *parent=0); ~MaFenetre(); signals: void actualiser(); ; private slots: void convertir(); void permuter(int index); tv (IUT Arles) Cours Qt tvaira@free.fr v1 14 / 17

Étape n 8 : connexion signal/slot MaFenetre::MaFenetre(QWidget *parent) : QWidget(parent) //... // Connexion signal/slot : connect(bconvertir, SIGNAL(clicked()), this, SLOT(convertir())); connect(this, SIGNAL(actualiser()), this, SLOT(convertir())); connect(choix, SIGNAL(currentIndexChanged(int)), this, SLOT(permuter( int))); connect(bquitter, SIGNAL(clicked()), qapp, SLOT(quit())); tv (IUT Arles) Cours Qt tvaira@free.fr v1 15 / 17

Étape n 9 : définition des slots void MaFenetre::convertir() switch (choixconversion->currentindex()) case 0: resultat->settext(qstring::fromutf8("%1").arg(9 * valeur-> text().todouble() / 5 + 32, 0, f, 2)); unite->settext(qstring::fromutf8(" F")); break; case 1: resultat->settext(qstring::fromutf8("%1").arg(5 * (valeur-> text().todouble() - 32) / 9, 0, f, 2)); unite->settext(qstring::fromutf8(" C")); break; void MaFenetre::permuter(int index) valeur->settext(resultat->text()); /* on permute */ emit actualiser(); /* on déclenche une nouvelle conversion */ tv (IUT Arles) Cours Qt tvaira@free.fr v1 16 / 17

Étape n 10 : l application principale #include <QApplication> #include "mafenetre.h" int main( int argc, char **argv ) QApplication a( argc, argv ); MaFenetre w; // rappel : pas de parent = fenêtre! w.show(); return a.exec(); tv (IUT Arles) Cours Qt tvaira@free.fr v1 17 / 17