QT 1: Construire des GUI en C++ MASSAVIOL Mathieu BRESSAND Jérémy. 13 octobre 2015

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

21 mars Simulations et Méthodes de Monte Carlo. DADI Charles-Abner. Objectifs et intérêt de ce T.E.R. Générer l'aléatoire.

Modéliser ses fenêtres avec Qt Designer

L'architecture MVC avec les widgets complexes

Modifier les propriétés d'un widget

Modéliser ses fenêtres avec Qt Designer

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

Construction d Interfaces Graphiques

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

Cahier des charges (CDC)

Alfstore workflow framework Spécification technique

Cahier Technique. «Développer une application intranet pour la gestion des stages des étudiants» Antonin AILLET. Remi DEVES

Le Bureau Graphique (1/2)

Conception et constitution d une base de données de scans laser terrestres et de données forestières de validation.

Programmation Objet Java Correction

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

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

GL BE FLYER. Chef de projet de l équipe : SCIONICO Pierre

Dans nos locaux au 98 Route de Sauve NÎMES. Un ordinateur PC par stagiaire, scanner, imprimante/copieur laser couleur

GOL502 Industries de services

Projet Android (LI260) Cours 2

Auto-évaluation Programmation en Java

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

Construire une application marketing Facebook sur la plateforme Windows Azure

Education Delivery Intelligent Tool

Création du projet : 1 sur 13

OWASP Code Review Guide Revue de code. Paris The OWASP Foundation. Victor Vuillard

Quick Setup Guide Guide de configuration rapide. Tablet Device SGPT12 Series Tablette électronique Série SGPT12

µrv : Realité Virtuelle

TP2 : Client d une BDD SqlServer

TD n 10 : Ma première Base de Données

Twixl Portfolio DE INDESIGN VERS LES TABLETTES. Luk Dhondt - Product Manager

Développer des Applications Internet Riches (RIA) avec les API d ArcGIS Server. Sébastien Boutard Thomas David

Introduction. PHP = Personal Home Pages ou PHP Hypertext Preprocessor. Langage de script interprété (non compilé)

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Jahia. Guillaume Monnette École Ingénieurs 2000 Marne-La-Vallée IR3

Module BD et sites WEB

GUI Client in HomeSIP Project

Prise en main des Google Apps

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Installation de TeamLab sur un serveur local Ce guide est destiné aux utilisateurs ayant des connaissances de base en administration Windows

Tutorial pour une application simple

Adaptabilité d un MOOC aux styles d apprentissage. Hubert Kadima Directeur de Recherche LARIS/EISTI hubert.kadima@eisti.fr

PROJET 1 : BASE DE DONNÉES REPARTIES

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

RMI le langage Java XII-1 JMF

Big Data. Cyril Amsellem Consultant avant-vente. 16 juin Talend

API SMS CONSEIL HTTP V2.01. Sommaire. Documentation V1.0 au 21/05/2011

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Unity. Moteur de jeu 3D et 2D. Cross platform: Windows, Mac, Linux, ios, Android, Blackberry, Xbox, Playstation, Wii

Interfaces graphiques avec l API Swing

Les bases de données relationnelles

Urbanisation des Systèmes d'information

Introduction à la programmation concurrente

Wonderware Mobile reporting

Modernisation, développement d applications et DB2 sous IBM i Technologies, outils et nouveautés Volubis.fr

Ajouter le moyen de paiement e-chèque-vacances (ANCV) Systempay 2.3

2 LES BASES DU HTML 19 Qu est-ce que le HTML? 20 De quand date le HTML? 20 Écrire son propre code HTML 22

Schéma relationnel et contraintes d intégrité : le cas ConduiteAuto

Une introduction à Java

Projet Viticulture - TP 3 : bases de données distantes BTS Services informatiques aux organisations

FAIRE UN PAIEMENT TIPI

VAMT 3. Activation de produits Microsoft

Manuel d'utilisation: Gestion commerciale - CRM

Application web de gestion de comptes en banques

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Créer un site Web : mode d emploi Sous SPIP, avec le squelette «établissement» de l académie de Versailles

Le hub d entreprise est une application de déploiement des applications mais aussi un outil de communication

Comment optimiser ses moyens de métrologie?

PG208, Projet n 3 : Serveur HTTP évolué

Traduction des Langages : Le Compilateur Micro Java

Jimmy Clairbois. Projets réalisés dans le cadre professionnel

Bases Java - Eclipse / Netbeans

Date : 08/02/12 SISR1 tp.topologie.reseau.wan Durée : 2 h

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

Architecture Orientée Service, JSON et API REST

Java DataBaseConnectivity

Le prototype de la fonction main()

Introduction à JDBC. Accès aux bases de données en Java

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Guide d utilisation. Version 1.1

Manuel d'installation

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

2X ThinClientServer Guide d utilisation

Remote Method Invocation (RMI)

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

Modélisation et Gestion des bases de données avec mysql workbench

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web»

Apache Camel. Entreprise Integration Patterns. Raphaël Delaporte BreizhJUG

Formation : Langues : Types d Intervention et Secteurs d Activité :

6085, rue Corbeil MULTIHEXA TROIS-RIVIÈRES

HMI target Visu / PLC HMI. Pour réaliser une interface homme machine avec PLC control

webmestre : conception de sites et administration de serveurs web 42 crédits Certificat professionnel CP09

Guide Expert Comptable Production Coala

Méthode de Test. Pour WIKIROUTE. Rapport concernant les méthodes de tests à mettre en place pour assurer la fiabilité de notre projet annuel.

LES ACCES ODBC AVEC LE SYSTEME SAS

SOMMAIRE

Transcription:

QT 1: Construire des GUI en C++ MASSAVIOL Mathieu BRESSAND Jérémy 13 octobre 2015

1 Introduction Présentation de Qt Qt en entreprise Modules pour créer des interfaces graphiques avec Qt Qt Quick Qt GUI Qt Widgets 2 Classe mère QObject Slots et signaux Organiser l'agencement de ses widgets avec les layouts QAbstractButton Recueillir des inputs

Présentation de Qt API orientée objet première version en 1995 framework multiplateforme Qt GUI, Qt Widgets, Qt Network, Qt SQL... Qt Creator (IDE)

Qt en entreprise Entreprises utilisant Qt Adobe Archos Boeing Google la Nasa Logiciels éveloppés avec Qt Adobe Photoshop Elements Google Earth Skype

Le module Qt Quick 1 Présentation API QML API C++ 2 Langage QML

Le module Qt QUI 1 Application Bureau 2 Dessin 2D QGuiApplication QWindow QEvent 3 Intégration OpenGL 4 Qt GUI avant Qt 5.0

Le module Qt Widgets 1 Les widgets 2 La gestion des événements 3 Choisir Qt Widgets

La classe mère QObject

La classe QWidget QWidget hérite de deux classes : QObject pour le côté "mécanique"(gestion des évènements) QPaintDevice pour le côté graphique

Les méthodes sur les widgets Méthodes de QWidget bool isvisible() const void move(int x, int y) void resize(int w, int h) void setfont(const QFont &) QWidget* parentwidget() const...

Les objets façon Qt

Connexion signal slot Liaison signal/slot Lier le signal d'un objet au slot d'un autre(ou lui même) permet de dénir l'action qui sera réalisée sur l'objet 2 quand l'objet 1 reçoit le signal.

Code code QObject::connect(m_bouton, SIGNAL(clicked()), application, SLOT(quit()));

La classe QLayout Les sous-classes de QLayout QHBoxLayout et QVBoxLayout QGridLayout QFormLayout

La classe QHBoxLayout 1 #i n c l u d e <Q A p p l i c a t i o n > #i n c l u d e <QPushButton> 3 #i n c l u d e <QHBoxLayout> i n t main ( i n t argc, c h a r a r g v [ ] ) 5 { Q A p p l i c a t i o n app ( argc, a r g v ) ; 7 QWidget f e n e t r e ; 9 QPushButton bouton1 = new QPushButton ( "1" ) ; QPushButton bouton2 = new QPushButton ( "2" ) ; 11 QPushButton bouton3 = new QPushButton ( "3" ) ; 13 QHBoxLayout l a y o u t = new QHBoxLayout ; 15 l a y o u t >addwidget ( bouton1 ) ; l a y o u t >addwidget ( bouton2 ) ; 17 l a y o u t >addwidget ( bouton3 ) ; 19 f e n e t r e. s e t L a y o u t ( l a y o u t ) ; f e n e t r e. show ( ) ; 21 r e t u r n app. e x e c ( ) ; 23 } Listing 1 Utilisation de la classe QHBoxLayout

La classe QVBoxLayout 1 #i n c l u d e <Q A p p l i c a t i o n > #i n c l u d e <QPushButton> 3 #i n c l u d e <QVBoxLayout> 5 i n t main ( i n t argc, c h a r a r g v [ ] ) { 7 Q A p p l i c a t i o n app ( argc, QWidget f e n e t r e ; a r g v ) ; 9 QPushButton bouton1 = new QPushButton ( "1" ) ; 11 QPushButton bouton2 = new QPushButton ( "2" ) ; QPushButton bouton3 = new QPushButton ( "3" ) ; 13 QVBoxLayout l a y o u t = new QVBoxLayout ; 15 l a y o u t >addwidget ( bouton1 ) ; 17 l a y o u t >addwidget ( bouton2 ) ; l a y o u t >addwidget ( bouton3 ) ; 19 f e n e t r e. s e t L a y o u t ( l a y o u t ) ; 21 f e n e t r e. show ( ) ; 23 r e t u r n app. e x e c ( ) ; } Listing 2 Utilisation de la classe QVBoxLayout

La classe QGridLayout 1 #i n c l u d e <Q A p p l i c a t i o n > #i n c l u d e <QPushButton> 3 #i n c l u d e <QGridLayout> 5 i n t main ( i n t argc, c h a r a r g v [ ] ) { 7 Q A p p l i c a t i o n app ( argc, QWidget f e n e t r e ; a r g v ) ; 9 QPushButton bouton1 = new QPushButton ( "1" ) ; 11 QPushButton bouton2 = new QPushButton ( "2" ) ; QPushButton bouton3 = new QPushButton ( "3" ) ; 13 QGridLayout l a y o u t = new QGridLayout ; 15 l a y o u t >addwidget ( bouton1, 0, 0) ; 17 l a y o u t >addwidget ( bouton2, 0, 1) ; l a y o u t >addwidget ( bouton3, 1, 0, 1, 2) ; 19 21 f e n e t r e. s e t L a y o u t ( l a y o u t ) ; f e n e t r e. show ( ) ; 23 r e t u r n app. e x e c ( ) ; 25 } Listing 3 Utilisation de la classe QGridLayout

La classe QFormLayout #i n c l u d e <Q A p p l i c a t i o n > 2 #i n c l u d e <QLineEdit > #i n c l u d e <QFormLayout> 4 6 i n t main ( i n t argc, c h a r a r g v [ ] ) { 8 Q A p p l i c a t i o n app ( argc, QWidget f e n e t r e ; a r g v ) ; 10 12 QLineEdit nom = new QLineEdit ; QLineEdit prenom = new QLineEdit ; QLineEdit age = new QLineEdit ; 14 QFormLayout l a y o u t = new QFormLayout ; 16 l a y o u t >addrow ( " Votre nom", nom) ; 18 l a y o u t >addrow ( " Votre prenom ", prenom ) ; l a y o u t >addrow ( " Votre age ", age ) ; 20 f e n e t r e. s e t L a y o u t ( l a y o u t ) ; 22 f e n e t r e. show ( ) ; 24 r e t u r n app. e x e c ( ) ; } Listing 4 Utilisation de la classe QFormLayout

La classe QAbstractButton Les sous-classes de QAbstractButton QPushButton QCheckBox QRadioButton

La classe QCheckBox #i n c l u d e <Q A p p l i c a t i o n > 2 #i n c l u d e <QtWidgets> 4 i n t main ( i n t argc, c h a r a r g v [ ] ) { 6 Q A p p l i c a t i o n app ( argc, QWidget f e n e t r e ; a r g v ) ; 8 QGroupBox groupbox = new QGroupBox ( "A quoi jouez vous?", & f e n e t r e ) ; 10 QCheckBox l o l = new QCheckBox ( " League o f l e g e n d ", &f e n e t r e ) ; 12 QCheckBox h e a r t h = new QCheckBox ( " H e a r t h s t o n e ", &f e n e t r e ) ; QCheckBox hero = new QCheckBox ( " Heroes o f the storm ", & f e n e t r e ) ; 14 QVBoxLayout vbox = new QVBoxLayout ; 16 vbox >addwidget ( l o l ) ; 18 vbox >addwidget ( h e a r t h ) ; vbox >addwidget ( h e r o ) ; 20 groupbox >s e t L a y o u t ( vbox ) ; 22 groupbox >move ( 5, 5) ; groupbox >r e s i z e ( 2 0 0, 150) ; 24 f e n e t r e. show ( ) ; 26 r e t u r n app. e x e c ( ) ; 28 } Listing 5 Utilisation de la classe QHBoxLayout

La classe QRadioButton 1 #i n c l u d e <Q A p p l i c a t i o n > #i n c l u d e <QtWidgets> 3 i n t main ( i n t argc, c h a r a r g v [ ] ) 5 { Q A p p l i c a t i o n app ( argc, a r g v ) ; 7 QWidget f e n e t r e ; 9 QGroupBox groupbox = new QGroupBox ( " Votre j e u p r e f e r e?", & f e n e t r e ) ; 11 QRadioButton b r o f o r c e = new QRadioButton ( " B r o f o r c e " ) ; QRadioButton r o c k e t = new QRadioButton ( " Rocket League " ) ; 13 QRadioButton s o u l = new QRadioButton ( " S o u l c a l i b u r " ) ; 15 s o u l >s e t C h e c k e d ( t r u e ) ; 17 QVBoxLayout vbox = new QVBoxLayout ; 19 vbox >addwidget ( b r o f o r c e ) ; vbox >addwidget ( r o c k e t ) ; 21 vbox >addwidget ( s o u l ) ; 23 groupbox >s e t L a y o u t ( vbox ) ; groupbox >move ( 5, 5) ; 25 groupbox >r e s i z e ( 2 0 0, 150) ; 27 f e n e t r e. show ( ) ; 29 r e t u r n app. e x e c ( ) ; } Listing 6 Utilisation de la classe QVBoxLayout

Sources http ://doc.qt.io/qt-5/index.html https ://openclassrooms.com/courses/programmez-avec-lelangage-c/introduction-a-qt https ://fr.wikipedia.org/wiki/qt http ://qt.developpez.com/