Programmation d interfaces avec

Dimension: px
Commencer à balayer dès la page:

Download "Programmation d interfaces avec"

Transcription

1 Programmation d interfaces avec * Qt (Code less. Create more. Deploy everywhere) * de Qt Development Frameworks (anciennement Trolltech) ( 1

2 Plan 4.Dessiner 5.Menu 0.Généralité 1. Widget 2.Signal et slot Utilisation Définition 6. Placement 7. Quelques classes 3.Evénements Barre de menus Menu surgissant Méthodes prédéfinies Filtres d événements Send & Post 2

3 0. Généralité GNOME Propose des toolkits GUI pour les environnements : GTK GDK KDE Qt CDE Motif Xt Xlib Protocole X Window System Bibliothèque en C++ : plus de 500 classes, apport positif du langage Objet. Portabilité, multi plates-formes : Unix, Linux, FreeBSD, Solaris, Windows, Mac, Excellente documentation html (classes, tutorials, exemples avec code, etc, ) par l'url : Logiciel libre pour développer des applications gratuites (licence GPL) sous la famille d Unix (installation comprise dans celle de Linux des distributeurs comme Red Hat, Fedora, Debian, etc, ) et payant sinon. A télécharger de 3

4 Un éventail assez large de widgets et d outils pour traiter les images, pour les dialogues, pour imprimer, pour l OpenGL* (2D-3D), etc, A la place des réflexes (Callbacks), Qt propose les méthodes de traitement d événements et surtout les signaux-slots (voir le chapitre 2. ci-dessous). Si un slot (une procédure) est connecté à un signal (une autre procédure) et si ce signal est émis, le noyau Qt se charge automatiquement d exécuter ce slot. Les signaux ne sont pas des événements. Par exemple : - Une widget de la classe QPushButton émet son signal clicked() lorsqu elle reçoit un événement ButtonPress suivi d un ButtonRelease, mais aussi des touches claviers accélératrices appropriées si le bouton en est sensibilisé. - Un objet (de la classe QObject) émet son signal destroyed() avant qu il soit détruit. N importe qui peut émettre un signal. * OpenGL est une marque déposée de Silicon Graphics 4

5 Comme pour les classes MFC (Windows/Microsoft), un certain nombre de classes de widget possèdent des méthodes virtuelles liées aux événements. Elles sont automatiquement appelées en réaction aux événements reçus : Dans la classe QWidget, on trouve les méthodes virtual void mousepressevent (QMouseEvent *); virtual void mousemoveevent (QMouseEvent *);... On peut donc hériter de cette classe en redéfinissant ces méthodes pour traiter ces événements. Pour aider le développeur, l outil qmake-qt4 permet de créer dans des cas courants un fichier projet (suffixé en général par.pro) ou un Makefile avec tous les liens nécessaires à partir d un fichier projet. Par exemple, en regroupant tous les sources (.h et.cpp) dans un répertoire (comme pour tous les exemples de ce cours), il suffit d y exécuter les commandes suivante : - qmake-qt4 project créer un fichier.pro - qmake-qt4 créer un Makefile à partir du fichier.pro. 5

6 Un premier exemple : (exemple0.cpp) /********** exemple0.cpp **********/ <qapplication.h> <qpushbutton.h> int main(int argc, char **argv) QApplication appli(argc, argv); /* ouverture session */ QPushButton bonjour("bonjour Monde!");/* sans mere, c est donc */ bonjour.resize(100, 30); /* une widget principale */ QPushButton hello("hello World!", NULL); /* sans mere, c est */ hello.resize(100, 30); /* aussi une widget principale */ hello.show(); bonjour.show(); /* on affiche les deux */ return appli.exec(); /* retour selon resultat de l execution */ 6

7 1. Widget Historique : (Xt / X Window System) - Serveur X : un processus qui contrôle les périphériques : écran(s), clavier, souris, tablette, etc, crée et gère physiquement les fenêtres, répond aux requêtes des clients : création de fenêtres, affichage, dessin, etc, leur envoie des événements. - Client X : une application X Window System. Il peut demander au serveur de créer 0, 1 ou plusieurs fenêtres principales «top level». Dans chacune d elles, il peut demander au serveur de créer d autres fenêtres filles, etc, On parlera d arbres de fenêtres avec au sommet de chaque arbre une fenêtre principale. - Gestionnaire de fenêtre : un client X qui gère votre(s) écran(s) en plaçant les fenêtres principales de votre application, en les décorant avec des bordures vous permettant de modifier leur taille, en y mettant une barre 7

8 de titre avec un bouton de fermeture, d agrandissement maximal, d iconification, etc, - Widget (composant d interface) = Window (fenêtre) + Gadget (ensemble de procédures et de structures de données pour la fenêtre). - Sous Motif, un gadget est un composant d interface sans fenêtre propre. Pour s afficher, il utilise la fenêtre de ses antécédents. - Une widget «top level» est une widget dont la fenêtre est «top level». - Comme pour l arbre de fenêtres, on parle d arbre de widgets. - Un composant sans fenêtre propre consomme moins de ressource (mémoire), forme plus exotique, mais réclame un peu plus de calcul. Java : - AWT : composants avec fenêtre, - Swing : composants dont une majorité sans fenêtre. Qt : - Widget : composants dont une majorité sans fenêtre. - Une widget déclarée sans parent (en utilisant le constructeur sans argument) est une widget «top level». Qt lui accorde une fenêtre «top level». 8

9 /********** exemple1.cpp **********/ <qapplication.h> <qwidget.h> <iostream> QWidget * fenetreracine (QWidget *w) QWidget *res = w; QWidget *parent = w->parentwidget(); while (parent!= NULL) res = parent; parent = res->parentwidget(); return res; void tracearbre (QWidget *w, int tab = 0) QList<QWidget *> liste = w->findchildren<qwidget *>(); QWidget *aux; 9

10 for (int i = tab; i > 0; --i) std::cout << "\t"; std::cout << w->objectname().toascii().data() << "\n"; while (!liste.isempty()) aux = liste.takefirst(); if (aux->parentwidget() == w) tracearbre(aux, tab + 1); int main(int argc, char *argv[]) QApplication appli(argc, argv); QWidget *principale = new QWidget(); principale->setwindowtitle("exemple1"); principale->setobjectname("principale"); /* ouverture session */ /* conteneur */ /* laisser un titre */ QWidget *fils_1 = new QWidget(principale); fils_1->setobjectname("fils_1"); 10

11 QWidget *petit_fils_1_1 = new QWidget(fils_1); petit_fils_1_1 ->setobjectname("petit_fils_1_1"); QWidget *petit_fils_1_2 = new QWidget(fils_1); petit_fils_1_2->setobjectname("petit_fils_1_2"); QWidget *fils_2 = new QWidget(principale); fils_2->setobjectname("fils_2"); QWidget *petit_fils_2 = new QWidget(fils_2); petit_fils_2->setobjectname("petit_fils_2"); std::cout << "\narbre à partir de principale :\n"; tracearbre(principale); std::cout << "\narbre à partir de la fenêtre racine " << "de principale :\n"; tracearbre(fenetreracine(principale)); std::cout << "\narbre à partir de la fenêtre racine " << "de petit_fils_2 :\n"; tracearbre(fenetreracine(petit_fils_2)); return appli.exec(); 11

12 $ Exemple1 Arbre à partir de principale : Principale Fils_1 Petit_Fils_1_1 Petit_Fils_1_2 Fils_2 Petit_Fils_2 Principale Petit_Fils_2 Fils_2 Petit_Fils_1_2 Petit_Fils_1_1 Fils_1 Arbre à partir de la fenêtre racine de principale : Principale Fils_1 Petit_Fils_1_1 Petit_Fils_1_2 Fils_2 Petit_Fils_2 Arbre à partir de la fenêtre racine de petit_fils_2 : Principale Fils_1 Petit_Fils_1_1 Petit_Fils_1_2 Fils_2 Petit_Fils_2 12

13 2. Signal et slot Utilisation Les signaux et slots sont des méthodes C++. Certaines classes de Widget contiennent un ou plusieurs signaux et/ou un ou plusieurs slots (voir la documentation sur les classes), par exemple : QAbstractButton : Slots void void... Signaux void void void void QPushButton : (héritée de QAbstractButton) Slot void showmenu () animateclick () toggle () et les signaux et slots hérités de sa mère pressed () released () clicked () toggled ( bool on ) et les signaux et slots hérités de sa mère 13

14 Pour connecter un slot à un signal : Bool connect const const const const QObject::connect( ) /* la forme couramment utilisée */ ( QObject char QObject char * * * * emetteur, /* l objet qui émet le du_signal, /* signal dont le slot du receveur, /* receveur va être connecté, et_son_slot ); */ */ */ Il y a d autres signatures de QObject::connect(). Comme le signal (resp. slot) est une méthode, on utilise le macro SIGNAL() (resp. SLOT()) pour entourer le signal (resp. slot) dans connect(). Un slot et un signal ne renvoient aucune valeur (type void). Pour être propre, on doit connecter un slot à un signal ayant la même signature. On peut connecter un nombre quelconque de slots à un signal donné. Un slot peut être connecté à un nombre quelconque de signaux. 14

15 Pour déconnecter un slot à un signal : Bool disconnect ( const QObject const char const QObject const char QObject::disconnect( ) /* la forme couramment utilisée */ * * * * emetteur, /* l objet qui émet le */ du_signal, /* signal dont le slot du */ receveur, /* receveur va être déconnecté, */ et_son_slot ); Il y a d autres signatures de QObject::disconnect(). Comme le signal (resp. slot) est une méthode, on utilise le macro SIGNAL() (resp. SLOT()) pour entourer le signal (resp. slot) dans disconnect(). 15

16 On quitte avec notre exemple légèrement modifié : (exemple2_1.cpp) /********** exemple2_1.cpp **********/ <qapplication.h> <qpushbutton.h> int main(int argc, char **argv) QApplication appli(argc, argv); /* ouverture session */ QPushButton *bonjour = new QPushButton("Bonjour Monde!", NULL); bonjour->resize(100, 30); QObject::connect( bonjour, SIGNAL(clicked()), &appli, SLOT(quit())); bonjour->show(); return appli.exec(); 16

17 Un autre exemple : (exemple2_2.cpp) /********** exemple2_2.cpp **********/ <qapplication.h> <qwidget.h> <qslider.h> <qlabel.h> int main(int argc, char *argv[]) QApplication appli(argc, argv); QWidget *principale = new QWidget(); principale->setwindowtitle("exemple2_2"); principale->setgeometry(0, 0, 150, 90); QSlider *reglette = new QSlider( Qt::Horizontal, principale); reglette->setrange(1, 12); reglette->setsinglestep(1); 17 /* ouverture session */ /* conteneur, sans mere, donc principal */ /* laisser un titre */ /* x, y, larg. et haut. */ /* une reglette */ /* en horizontale */ /* comme mere */ /* valeur minimale, maximale */ /* par pas de 1 pour les les touches flèches */

18 reglette->setsliderposition(9); reglette->setgeometry(10, 10, 130, 30); /* valeur initiale */ QLabel *affichage = new QLabel(principale); affichage->setgeometry(10, 60, 130, 30); affichage->setalignment(qt::alignhcenter); affichage->setnum(9); QObject::connect( reglette, SIGNAL(valueChanged(int)), affichage, SLOT(setNum(int))); principale->show(); return appli.exec(); 18

19 Pour ajouter de nouveaux signaux et slots, on définit une nouvelle classe : Dans un fichier d en-tête.h (par exemple, monlabel.h), définir une nouvelle classe héritant de la classe QObject ou de ses sous-classes, utiliser le macro Q_OBJECT et les mots clés signals et slots. Fichier monlabel.h ne contenant rien d autre que la classe : /********** monlabel.h **********/ #ifndef MONLABEL_H #define MONLABEL_H <qlabel.h> <qstring.h> class MonLabel : public QLabel Q_OBJECT public : MonLabel (const QString texte, QWidget *parent, Qt::WindowFlags f = 0); 19

20 public slots : void slotsetmois (int); signals : void signalfin (); private : QString *lesmois[12]; ; #endif On exécute après la commande moc -o signal_slot_monlabel.cpp monlabel.h qui générera le fichier signal_slot_monlabel.cpp à partir du contenu du fichier monlabel.h. On y trouve tous les ingrédients utilisés pour la connexion. moc est automatiquement fait par qmake-qt4. Dans le fichier monlabel.cpp, on écrit les slots et autres méthodes pour la classe MonLabel : 20

21 /********** monlabel.cpp **********/ "monlabel.h" MonLabel::MonLabel (const QString texte, QWidget * parent, Qt::WindowFlags f) : QLabel(texte, parent, f) const char *nomsmois[] = "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre" ; for (int i = 0; i < 12; ++i) lesmois[i] = new QString(nomsmois[i]); void MonLabel::slotSetMois (int k) if (k == 13) emit signalfin(); else settext(*lesmois[k-1]); 21

22 Ne pas définir les méthodes concernant les signaux car moc les a déjà faits dans signal_slot_monlabel.cpp à sa façon pour être compatibles avec la connexion connect(). Sinon, il y aura alors une erreur de re-définition à la compilation finale. Reste maintenant à l utiliser en modifiant légèrement le programme précédent : (exemple2_3.cpp) /********** exemple2_3.cpp **********/ <qapplication.h> <qwidget.h> <qslider.h> "monlabel.h int main(int argc, char *argv[]) QApplication appli(argc, argv); QWidget *principale = new QWidget(); principale->setwindowtitle("exemple2_3"); principale->setgeometry(0, 0, 150, 90); 22 /* ouverture session */ /* conteneur, sans mere, donc principal */ /* laisser un titre */ /* x, y, larg. et haut. */

23 QSlider *reglette = new QSlider( Qt::Horizontal, principale); reglette->setrange(1, 13); reglette->setsinglestep(1); reglette->setsliderposition(9); reglette->setgeometry(10, 10, 130, 30); /* une reglette */ /* en horizontale */ /* comme mere */ /* valeur minimale, maximale */ /* par pas de 1 pour les les touches flèches */ /* valeur initiale */ MonLabel *affichage = new MonLabel("Septembre", principale); affichage->setgeometry(10, 60, 130, 30); affichage->setalignment(qt::alignhcenter); QObject::connect( reglette, SIGNAL(valueChanged(int)), affichage, SLOT(slotSetMois(int))); QObject::connect( affichage, SIGNAL(signalFin()), &appli, SLOT(quit())); principale->show(); return appli.exec(); 23

24 En déplaçant le curseur au delà du mois de décembre, on quitte l application. Il est possible de connecter un signal à un autre signal : ajouter le signal signalsuite() dans monlabel.h. dans monlabel.cpp, mettre emit signalsuite(); à la place de emit signalfin();, ajouter aux connections ci-dessus connect() une nouvelle : QObject::connect(affichage, SIGNAL(signalSuite()), affichage, SIGNAL(signalFin())); et on aura le même résultat. 24

25 3. Evénements Méthodes prédéfinies (event handler) Un traitement d'événement ("event handler") est une méthode (procédure) appelée par la couche Qt lorsque certain type d événement (ou suite d événements) se produit dans la fenêtre d une widget. Par exemple, pour la classe QWidget, une partie des méthodes membres réagissant aux événements particuliers sont : virtual virtual virtual virtual virtual... bool void void void void event mousepressevent mousereleaseevent mousedoubleclickevent mousemoveevent (QEvent *); (QMouseEvent (QMouseEvent (QMouseEvent (QMouseEvent *); *); *); *); Presque tous les événements concernant une fenêtre sont représentés. On a en plus des traitements pour une suite d événements comme mousedoubleclickevent(). 25

26 Et plus encore : virtual virtual virtual virtual... void void void void dragenterevent dragmoveevent dragleaveevent dropevent (QDragEnterEvent *); (QDragMoveEvent *); (QDragLeaveEvent *); (QDropEvent *); La classe QWidget est la classe de base héritée par toutes les classes de widget. On retrouve donc tous ces traitements d événements dans ses sous-classes. Par exemple : exemple3_1.cpp /********** exemple3_1.cpp **********/ <qapplication.h> <qwidget.h> <qevent.h> <qlabel.h> <stdio.h> 26

27 class MonWidget : public QWidget QLabel *lx, *ly; public : MonWidget () : QWidget() void setxy (QLabel *x, QLabel *y) lx = x; ly = y; protected : void mousemoveevent (QMouseEvent *e); ; /* avec bouton enfonce sinon */ /* voir setmousetracking() */ int main(int argc, char *argv[]) QApplication appli(argc, argv); /* ouverture session */ MonWidget *principale = new MonWidget(); principale->setgeometry(0, 0, 150, 90); principale->setwindowtitle("exemple3_1"); /* conteneur */ /* x, y, larg. et haut. */ /* laisser un titre */ QLabel *x = new QLabel(principale); x->setgeometry(10, 60, 60, 30); x->setalignment(qt::alignleft); x->settext("x = 0"); 27

28 QLabel *y = new QLabel(principale); y->setgeometry(80, 60, 60, 30); y->setalignment(qt::alignleft); y->settext("y = 0"); principale->setxy(x, y); principale->show(); return appli.exec(); void MonWidget::mouseMoveEvent (QMouseEvent *e) char chaine[200]; sprintf(chaine, "x = %d", e->x()); lx->settext(chaine); sprintf(chaine, "y = %d", e->y()); ly->settext(chaine); 28

29 Le traitement d événements event() est très particulier : appelé en premier, passe par tous les filtres installés (voir Filtres ci-dessous), s il n y a aucun filtre concernant cet événement, il appellera le traitement correspondant à l événement. il est donc déconseillé de le redéfinir dans les sous-classes, mais plutôt de redéfinir les traitements correspondant aux événements. Lorsque l on redéfinit dans une sous-classe un traitement d événement, il est souvent nécessaire d appeler le même traitement d événement de sa sur-classe : exemple3_2.cpp /********** exemple3_2.cpp **********/ <qapplication.h> <qpushbutton.h> class MonBouton : public QPushButton public : MonBouton (const QString &text, QWidget *parent) : QPushButton(text, parent) 29

30 protected : virtual void mousereleaseevent (QMouseEvent *e); ; void MonBouton::mouseReleaseEvent (QMouseEvent *e) QPushButton::mouseReleaseEvent(e); int main(int argc, char **argv) QApplication appli(argc, argv); /* ouverture session */ MonBouton *bonjour = new MonBouton("Bonjour Monde!", NULL); bonjour->resize(100, 30); QObject::connect( bonjour, SIGNAL(clicked()), &appli, SLOT(quit())); bonjour->show(); return appli.exec(); 30

31 Si on ne fait pas un appel au traitement de la sur-classe (c est à dire si on enlève du traitement d événement MonBouton::mouseReleaseEvent() la ligne QPushButton::mouseReleaseEvent()), alors le signal clicked() qui est émis par défaut par QPushButton::mouseReleaseEvent() ne sera plus émis et le slot quit() de l application ne sera pas appelé. L affichage aussi est affecté par cet absence. Filtres d événements Déclarer une classe MonFiltre héritant de QObject, et redéfinir la méthode eventfilter() : Class MonFiltre : public QObject protected : bool eventfilter (QObject *o, QEvent *e)... return true; /*... return false; 31

32 Le traitement d événement event() passe voir tous les filtres installés dont celuici. La valeur de retour est très importante : true pour signifier que l événement est traité par ce filtre et event() passera voir les autres filtres, mais ne passera plus au traitement d événement correspondant, false pour signifier le contraire, et si tous les filtres renvoient false (aucun filtre n est donc intéressé) alors event() passera voir le traitement d événement correspondant. Installer le filtre sur la widget avec QObject::installEventFilter(). Un exemple : exemple3_3.cpp /********** exemple3_3.cpp **********/ <qapplication.h> <qwidget.h> <qevent.h> <qlabel.h> <iostream> 32

33 class MonFiltre : public QObject protected : bool eventfilter (QObject *o, QEvent *e); ; class MonWidget : public QWidget public : QLabel *lx, *ly; MonWidget () : QWidget() void setxy (QLabel *x, QLabel *y) lx = x; ly = y; protected : void mousepressevent (QMouseEvent *e); void mousereleaseevent (QMouseEvent *e); void mousemoveevent (QMouseEvent *e); ; int main(int argc, char **argv) QApplication appli(argc, argv); /* ouverture session */ MonWidget *principale = new MonWidget(); /* conteneur */ principale->setgeometry(0, 0, 150, 90); /* x, y, larg. et haut. */ 33

34 principale->setwindowtitle("exemple3_3 ); QLabel *x = new QLabel(principale); x->setgeometry(10, 60, 60, 30); x->setalignment(qt::alignleft); x->settext("x = 0"); QLabel *y = new QLabel(principale); y->setgeometry(80, 60, 60, 30); y->setalignment(qt::alignleft); y->settext("y = 0"); MonFiltre *monfiltre = new MonFiltre(); principale->setxy(x, y); principale->installeventfilter(monfiltre); principale->show(); return appli.exec(); void MonWidget::mousePressEvent (QMouseEvent *e) std::cout << "ButtonPress\n"; 34

35 void MonWidget::mouseReleaseEvent (QMouseEvent *e) std::cout << "ButtonRelease\n"; Void MonWidget::mouseMoveEvent (QMouseEvent *e) std::cout << "Ne passera jamais par ici\n"; bool MonFiltre::eventFilter (QObject *o, QEvent *e) char chaine[200]; if (e->type() == QEvent::MouseMove) sprintf(chaine, "x = %d", ((QMouseEvent *)e)->x()); ((MonWidget *)o)->lx->settext(chaine); sprintf(chaine, "y = %d", ((QMouseEvent *)e)->y()); ((MonWidget *)o)->ly->settext(chaine); return true; else return false; 35

36 A l exécution, on remarquera que le traitement d événement MonWidget::mouseMoveEvent() ne sera pas appelé par event() puisque notre filtre retroune true pour l événement MouseMove. Et si dans MonFiltre::eventFilter() à la place de return false on retournait return true, auriez-vous deviner le résultat? Aucun traitement d événement n est appelé : plus de ButtonPress, de ButtonRelease, d Expose, etc, Seul le MouseMove est traité par le filtre. Quelques traitements d événement particuliers appelés par QWidget::event() (si aucun filtre n est intéressé par ces événements) QEvent::MouseButtonPress void QWidget::mousePressEvent (QMouseEvent *e); QEvent::Leave void QWidget::leaveEvent (QEvent *e); QEvent::Close void QWidget::closeEvent (QCloseEvent *e);... 36

37 virtual void QWidget::mousePressEvent (QMouseEvent *e); Il y a un comportement par défaut pour cette méthode, entre autre, elle exécute e->accept(). Si on réécrit cette méthode en y mettant e->ignore(), l événement sera transmis à la widget mère. virtual void QWidget::closeEvent (QCloseEvent *e); Par exemple, cet événement est reçu par la widget principale lorsque l utilisateur clique dans le bouton de fermeture situé dans la barre supérieure de décoration. Il y a un comportement par défaut pour cette méthode, entre autre, elle exécute e->accept() qui fermera définitivement la fenêtre, Pour ne pas fermer définitivement la widget, on peut réécrire cette méthode soit en y mettant e->ignore(), soit en omettant e->accept() et e->ignore(). 37

38 Un exemple qui permet de fermer la fenêtre au bout de 10 clics dans le bouton : /********** exemple3_4.cpp **********/ void QWidget::closeEvent (QCloseEvent *e) static int i = 9; <qapplication.h> <qpushbutton.h> <qevent.h> if (!i--) e->accept(); else e->ignore(); int main(int argc, char **argv) QApplication appli(argc, argv); QPushButton bonjour("bonjour Monde!", NULL); bonjour.resize(100, 30); bonjour.show(); return appli.exec(); 38

39 Send & Post On peut aussi envoyer un événement à une widget par bool QApplication::sendEvent (QObject *receveur, QEvent *event ); méthode static qui envoie directement au receveur et attend que l événement soit traité. void QApplication::postEvent (QObject * receveur, QEvent * event ) méthode static qui se contente de ranger l événement dans la file d événements du receveur sans attendre la fin du traitement. 39

40 4. Dessin Algorithme du peintre, Double buffering (depuis la version 4) : emprunté de OpenGL, DirectX, etc,, meilleur affichage, animation plus fluide, QPainter : classe qui fournit les outils de dessins de bas niveau. Elle permet de dessiner dans les classes héritées de QPaintDevice : QPixmap, QWidget, QPicture, QPrinter, etc, On dessine à la façon Windows entre le begin() et le end() : bool QPainter::begin (QPaintDevice *device); appelé automatiquement par le constructeur QPainter::QPainter (QPaintDevice *device);, sur un support (device) donné, un seul begin() jusqu au end() ou jusqu à la destruction de ce QPainter, renvoie true s il peut dessiner sur le support device, false sinon. 40

41 bool QPainter::end (); appelé automatiquement par le destructeur de QPainter, renvoie true s il n est plus active, false sinon. Quelques méthodes de QPainter : - QRectF boundingrect ( const QRectF &rectangle, /* cadre */ int flags, /* alignement du texte */ const QString &text); renvoie le rectangle envelopant du text. - void drawarc (int x, int y, int width, int height, int startangle, /* positive = sens trigonométrique */ int spanangle); - void drawimage ( const QRectF &rectangle, const QImage &image); /* dessine l image en se limitant dans un rectangle */ - void drawtext (const QPointF &position, const QString &text); 41

42 - void fillrect ( const QRect &rectangle, const QBrush &brush); - void setclipping (bool enable); /* en évitant ou pas les filles */ - void setpen (const QPen &pen); void setbrush (const QBrush & brush); - void setpen (const QColor & color); /* changer la couleur */ - void setopacity (qreal opacity); /* 0.0 = transparent et 1.0 = opaque */ - void setbackground (const QBrush &brush); /* utilisé pour dessiner les creux des traits en pointillés ou le fond des caractères */ - void rotate (qreal angle); /* rotation du repère sens horaire */ void scale (qreal sx, qreal sy); /* changement d échelle */ - void save (); /* empiler les caractéristiques de ce painter */ void restore (); /* et les restituer */ 42

43 Par exemple : exemple4.cpp /********** exemple4.cpp **********/ <qapplication.h> <qwidget.h> <qpainter.h> <QLinearGradient> class MaWidget : public QWidget protected : void paintevent (QPaintEvent *e); ; int main(int argc, char **argv) QApplication appli(argc, argv); MaWidget *principale = new MaWidget(); principale->setgeometry(0, 0, 150, 90); principale->setwindowtitle("exemple4"); principale->show(); 43

44 return appli.exec(); void MaWidget::paintEvent (QPaintEvent *e) QPainter peintre; QLinearGradient gradient(50, 50, 200, 200); peintre.begin(this); peintre.setpen(qt::blue); peintre.drawtext(50, 20, "Exemple4"); gradient.setcolorat(0, Qt::green); gradient.setcolorat(1, Qt::red); peintre.setpen(qpen(gradient, 10)); peintre.setfont(qfont("helvetica", 50, QFont::Bold)); for (int i = 100; i < 200; i += 40) peintre.drawtext(50, i, "Exemple4"); peintre.drawline(50, 50, 200, 200); peintre.drawline(50, 200, 200, 50); peintre.end(); 44

45 5. Menu Classe des barres de menus : QMenuBar. Une widget de la classe QMainWindow détecte automatiquement les widgets filles des classes QMenuBar, QToolBar et QStatusBar. Elle permet d organiser une barre de menus, un nombre quelconque de barres d outils, une barre d état et une widget centrale. On utilise les slots pour donner des comportements aux différents boutons des menus. Pour une barre de menus avec menus déroulants : /********** mamainwindow.h **********/ #ifndef MAMAINWINDOW_H #define MAMAINWINDOW_H <QMainWindow> <QMenuBar> <QStatusBar> <QAction> <QContextMenuEvent> 45

46 class MaMainWindow : public QMainWindow Q_OBJECT public : MaMainWindow (); private : QMenuBar *menubar; QMenu *fmenu, *emenu; QAction *actione1, *actione2; protected : void contextmenuevent (QContextMenuEvent *event); private slots : void slotf1 (); void slotf2 (); void slote1 (); void slote2 (); ; #endif 46

47 "mamainwindow.h" <qapplication.h> <iostream> MaMainWindow::MaMainWindow () QAction *action; statusbar(); // rend la barre de status du MainWindow, // la créer si elle n'existe pas (par défaut). fmenu = menubar()->addmenu(tr("&fichier")); action = new QAction(tr("F&1"), this); action->setshortcut(tr("ctrl+1")); action->setstatustip(tr("action F1")); connect(action, SIGNAL(triggered()), this, SLOT(slotF1())); fmenu ->addaction(action); action = new QAction(tr("F&2"), this); action->setshortcut(tr("ctrl+2")); action->setstatustip(tr("action F2")); connect(action, SIGNAL(triggered()), this, SLOT(slotF2())); fmenu->addaction(action); fmenu->addseparator(); 47

48 action = new QAction(tr("&Quitter"), this); action->setshortcut(tr("ctrl+shift+q")); action->setstatustip(tr("action Quitter")); connect(action, SIGNAL(triggered()), this, SLOT(close())); fmenu->addaction(action); emenu = menubar()->addmenu(tr("&edition")); action = new QAction(tr("E&1"), this); action->setshortcut(tr("ctrl+3")); action->setstatustip(tr("action E1")); connect(action, SIGNAL(triggered()), this, SLOT(slotE1())); emenu ->addaction(action); actione1 = action; action = new QAction(tr("E&2"), this); action->setshortcut(tr("ctrl+4")); action->setstatustip(tr("action E2")); connect(action, SIGNAL(triggered()), this, SLOT(slotE2())); emenu->addaction(action); actione2 = action; 48

49 void MaMainWindow::contextMenuEvent (QContextMenuEvent *event) static QMenu *menu = NULL; if (menu == NULL) menu = new QMenu(this); menu->addaction(actione1); menu->addaction(actione2); menu->exec(event->globalpos()); void void void void MaMainWindow::slotF1 MaMainWindow::slotF2 MaMainWindow::slotE1 MaMainWindow::slotE2 () () () () std::cout std::cout std::cout std::cout 49 << << << << "F1\n"; "F2\n"; "E1\n"; "E2\n";

50 6. Placement Par position, QHBoxLayout : placer les widgets filles en horizontal (exemple6_1.cpp) /********** exemple6_1.cpp **********/ <qapplication.h> <qwidget.h> <qpushbutton.h> <qlayout.h> int main(int argc, char **argv) QApplication appli(argc, argv); QWidget *principale = new QWidget(); principale->setgeometry(0, 0, 150, 90); principale->setwindowtitle("exemple6_1"); 50 /* ouverture session */ /* conteneur */ /* x, y, larg. et haut. */

51 QHBoxLayout *placement = new QHBoxLayout(principale); placement->addwidget(new QPushButton("Bouton 1", principale)); placement->addwidget(new QPushButton("Bouton 2", principale)); placement->addwidget(new QPushButton("Bouton 3", principale)); placement->activate(); (new QPushButton("Bouton 0", principale)) ->setgeometry(0, 0, 100, 40); principale->show(); return appli.exec(); QVBoxLayout : même chose, mais en vertical. En combinant les deux : (exemple6_3.cpp) 51

52 /********** exemple6_3.cpp **********/ <qapplication.h> <qwidget.h> <qpushbutton.h> <qlayout.h> int main(int argc, char **argv) QApplication appli(argc, argv); QWidget *principale = new QWidget(); principale->setgeometry(0, 0, 150, 90); principale->setwindowtitle("exemple6_3"); /* ouverture session */ /* conteneur */ /* x, y, larg. et haut. */ QVBoxLayout *placementv = new QVBoxLayout(principale); QHBoxLayout *placementh1 = new QHBoxLayout(); QHBoxLayout *placementh2 = new QHBoxLayout(); placementv->addlayout(placementh1); placementv->addlayout(placementh2); 52

53 placementh1->addwidget(new placementh1->addwidget(new placementh2->addwidget(new placementh2->addwidget(new placementh2->addwidget(new QPushButton("Bouton QPushButton("Bouton QPushButton("Bouton QPushButton("Bouton QPushButton("Bouton 1-1", 1-2", 2-1", 2-2", 2-3", principale)); principale)); principale)); principale)); principale)); principale->show(); return appli.exec(); QGridLayout : (exemple6_4.cpp) /********** exemple6_4.cpp **********/ <qapplication.h> <qwidget.h> <qpushbutton.h> <QGridLayout> 53

54 int main(int argc, char **argv) QApplication appli(argc, argv); QWidget *principale = new QWidget(); principale->setgeometry(0, 0, 150, 90); principale->setwindowtitle("exemple6_4"); /* ouverture session */ /* conteneur */ /* x, y, larg. et haut. */ QGridLayout *placement = new QGridLayout(principale); placement->addwidget(new placement->addwidget(new placement->addwidget(new placement->addwidget(new placement->addwidget(new QPushButton("Bouton QPushButton("Bouton QPushButton("Bouton QPushButton("Bouton QPushButton("Bouton 1, 1, 1, 2); 1", 2", 3", 4", 5", principale), principale), principale), principale), principale), 0, 0, 0, 1, 0); 1); 2); 0); principale->show(); return appli.exec(); QStackedLayout : afficher une widget à la fois (exemple6_5.cpp) 54

55 7. Quelques classes QObject : classe de base pour tous les widgets. On y trouve outils pour gérer l arborescence des objets, signaux, slots, connect et disconnect, nom pour chaque objet qui permet de le retrouver facilement par nom, outils pour traiter les événements, QPaintDevice : classe de base pour les objets où on peut dessiner, QWidget : héritée de QObject et de QPaintDevice, QPixmap : hérité seulement de QPaintDevice, dédiée pour l affichage à l écran, pas d hiérarchie, pas de traitement d événement, juste un espace (de mémoire) où on peut dessiner, non affichable directement sur l écran. Pour ce faire, il faut le copier dans une widget, QImage : hérité seulement de QPaintDevice, plus sofistiquée que QPixmap, entrées et sorties vers les fichiers en formats JPEG, GIF, PNG, etc., 55

56 QPrinter et QPrintDialog /********** exemple7_1.cpp **********/ <QApplication> <QPainter> <QPrinter> <QPrintDialog> int main(int argc, char **argv) QApplication appli(argc, argv); /* ouverture session */ QPrinter *imp = new QPrinter(); QPrintDialog *imp_dial = new QPrintDialog(imp); QPainter *peintre = new QPainter(); if (imp_dial->exec() == QDialog::Accepted) // ouvre le dialogue et attend peintre->begin(imp); // la réponse peintre->drawellipse(100, 100, 100, 100); peintre->end(); return appli.exec(); 56

57 QGLWidget : Widget dédié à l OpenGL une fois la widget mise en place, on peut utiliser toutes les fonctions et procédures d OpenGL. Exploite pleinement la possibilité physique de la carte graphique. Création plus facile de menus et de dialogues. 57

58 QColorDialog : /********** exemple7_3.cpp **********/ <QApplication> <QColorDialog> <QColor> <iostream> int main(int argc, char **argv) QApplication appli(argc, argv); /* ouverture session */ QColorDialog *color_dial; QColor c = color_dial->getcolor(); if (c.isvalid()) std::cout << "Vous avez << "Rouge = " << "Vert = " << "Bleu = " return appli.exec(); choisi la couleur dont les composées :\n" << c.red() << "\n" << c.green() << "\n" << c.blue() << "\n"; 58

59 QFileDialog : /********** exemple7_4.cpp **********/ <QApplication> <QFileDialog> <iostream> int main(int argc, char **argv) QApplication appli(argc, argv); /* ouverture session */ QString f = QFileDialog::getOpenFileName(NULL, "Ouverture de fichier", "."); // getsavefilename(); std::cout << f.tostdstring() << "\n"; return appli.exec(); 59

60 QRubberBand : permet d afficher un rectangle ou un trait horizontal ou vertical de sélection dynamique. QMovie QSvgWidget : permet d afficher les contenus SVG (Scalable Vector Graphics), l équivalent de Flash (Flash Player de chez Abobe). QXmlReader : un interface pour XML. QTextBrowser : permet d afficher des hypertextes et d y naviguer. QPixmap : exactement comme une fenêtre, on peut y dessiner. etc, 60

Construction d Interfaces Graphiques

Construction d Interfaces Graphiques Informatique S7-S9 Module CAI Construction d Interfaces Graphiques Alexis NEDELEC Centre Européen de Réalité Virtuelle Ecole Nationale d Ingénieurs de Brest enib c 2012 nedelec@enib.fr (ENIB-CERV) Construction

Plus en détail

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

AUVRAY Clément (168187) HOMBERGER Alexandre (186897) GLADE. Langages, outils et méthodes pour la programmation avancée Page 1 sur 12 GTK+ GLADE Page 1 sur 12 SOMMAIRE INTRO 3 Présentation de GTK+ 3 Présentation de GLADE 3 GTK+ 4 Installation 4 Les Widgets 4 Le système de hiérarchie 5 Les signaux 6 GLADE 7 Installation 7 L interface

Plus en détail

IHM2. Eric Lecolinet - Télécom ParisTech www.telecom-paristech.fr/~elc 1. Toolkit graphique Qt Dessin interactif. Machines à états.

IHM2. Eric Lecolinet - Télécom ParisTech www.telecom-paristech.fr/~elc 1. Toolkit graphique Qt Dessin interactif. Machines à états. IHM2 Toolkit graphique Qt Dessin interactif Machines à états Qt Designer Eric Lecolinet - Télécom ParisTech www.telecom-paristech.fr/~elc 1 Toolkit Qt Boîte à outils graphique multi-plateformes - Principaux

Plus en détail

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

Warren PAULUS Robin GODEFROID. C++ - Interface Graphique avec Visual Studio 2010 C++ - Interface Graphique avec Visual Studio 2010 2010/2011 Mise à jour 1.2 : Installation réussie avec Qt 4.7.3. - Ajout d éléments supplémentaires sur le fonctionnement de «QsplashScreen». - Ajout d

Plus en détail

Modéliser ses fenêtres avec Qt Designer

Modéliser ses fenêtres avec Qt Designer 1 sur 20 05/07/2011 18:31 Modéliser ses fenêtres avec Qt Designer Informations sur le tutoriel Auteurs : M@teo21 et Nanoc Difficulté : Licence : Plus d'informations Popularité Visualisations : 1 501 676

Plus en détail

Guide de l utilisateur. Faites connaissance avec la nouvelle plateforme interactive de

Guide de l utilisateur. Faites connaissance avec la nouvelle plateforme interactive de Guide de l utilisateur Faites connaissance avec la nouvelle plateforme interactive de Chenelière Éducation est fière de vous présenter sa nouvelle plateforme i+ Interactif. Conçue selon vos besoins, notre

Plus en détail

Programmation système en C/C++

Programmation système en C/C++ Programmation système en C/C++ Jean-Baptiste Vioix (jb.vioix@free.fr) LE2I - ENESAD http://jb.vioix.free.fr 1-41 Programmation en C/C++ sous Unix Il existe des très nombreux outils de développement sous

Plus en détail

Édu-groupe - Version 4.3

Édu-groupe - Version 4.3 Édu-groupe - Version 4.3 Guide de l utilisateur Gestion des fichiers Société GRICS, Équipe Évaluation Août 2012 2 CONSIDÉRATIONS GÉNÉRALES A. Importante mise en garde concernant les types de fureteur Les

Plus en détail

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Anne Tasso Java Le livre de premier langage 10 e édition Avec 109 exercices corrigés Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Table des matières Avant-propos Organisation de l ouvrage..............................

Plus en détail

Démarrer et quitter... 13

Démarrer et quitter... 13 Démarrer et quitter... 13 Astuce 1 - Ouvrir, modifier, ajouter un élément dans le Registre... 14 Astuce 2 - Créer un point de restauration... 18 Astuce 3 - Rétablir un point de restauration... 21 Astuce

Plus en détail

Tutorial Terminal Server sous

Tutorial Terminal Server sous Tutorial Terminal Server sous réalisé par Olivier BOHER Adresse @mail : xenon33@free.fr Site Internet : http://xenon33.free.fr/ Tutorial version 1a Page 1 sur 1 Index 1. Installation des services Terminal

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

Table des matières ENVIRONNEMENT

Table des matières ENVIRONNEMENT ENVIRONNEMENT Présentation de Windows 7.................13 Démarrer Windows 7......................15 Quitter.................................15 Les fenêtres..............................16 Généralités............................17

Plus en détail

Manuel de System Monitor

Manuel de System Monitor Chris Schlaeger John Tapsell Chris Schlaeger Tobias Koenig Traduction française : Yves Dessertine Traduction française : Philippe Guilbert Traduction française : Robin Guitton Relecture de la documentation

Plus en détail

0.1 Mail & News : Thunderbird

0.1 Mail & News : Thunderbird 0.1 Mail & News : Thunderbird 1 0.1 Mail & News : Thunderbird Thunderbird est le lecteur de mail, de newsgroup et de flux RSS de la fondation Mozilla. Il est disponible pour Linux (en version gtk2), pour

Plus en détail

Utilisation du client de messagerie Thunderbird

Utilisation du client de messagerie Thunderbird Outlook express n existant plus sur les systèmes d exploitation sortis après Windows XP, nous préconisons désormais l utilisation du client de messagerie libre distribué gratuitement par la Fondation Mozilla.

Plus en détail

Java 7 Les fondamentaux du langage Java

Java 7 Les fondamentaux du langage Java 184 Java 7 Les fondamentaux du langage Java 1.1 Les bibliothèques graphiques Le langage Java propose deux bibliothèques dédiées à la conception d'interfaces graphiques. La bibliothèque AWT et la bibliothèque

Plus en détail

TP1 : Initiation à l algorithmique (1 séance)

TP1 : Initiation à l algorithmique (1 séance) Université de Versailles Vanessa Vitse IUT de Vélizy - Algorithmique 2006/2007 TP1 : Initiation à l algorithmique (1 séance) 1 Prise en main de l environnement Unix : rappels et compléments Le but de la

Plus en détail

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

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004 Questionnaire d'examen final INF1101 Sigle du cours Nom : Signature : Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004 Professeur(s)

Plus en détail

WINDOWS 8. Windows 8 se distingue par la présence de 2 interfaces complémentaires :

WINDOWS 8. Windows 8 se distingue par la présence de 2 interfaces complémentaires : WINDOWS 8 Windows 8 : généralités Windows 8 est la dernière version du système d'exploitation de Windows, sortie en octobre 2012. Si vous possédez un ordinateur récent, il y a de fortes chances que votre

Plus en détail

Logiciel de gestion pour restaurants et Bars

Logiciel de gestion pour restaurants et Bars http://www.easy-sarl.com Logiciel de gestion pour restaurants et Bars Guide de démarrage rapide - 01/11/2010 Sommaire Présentation générale...3 Premier démarrage...3 Les articles...4 Configuration des

Plus en détail

Installation et paramétrage de Fedora dans VirtualBox.

Installation et paramétrage de Fedora dans VirtualBox. 1. Installation de Fedora: Installation et paramétrage de Fedora dans VirtualBox. Télécharger le fichier «Fedora 13.iso» sur votre Bureau. Ensuite ouvrez le logiciel VirtualBox et choisir la machine virtuelle

Plus en détail

Installation et prise en main d UBUNTU

Installation et prise en main d UBUNTU Installation et prise en main d UBUNTU Introduction Ubuntu est une distribution Linux adoptée par près de 25 millions d utilisateurs de par le monde. Contrairement aux systèmes d exploitation propriétaires

Plus en détail

USTL - Licence ST-A 1ère année 2005-2006 Initiation à la programmation TP 1

USTL - Licence ST-A 1ère année 2005-2006 Initiation à la programmation TP 1 USTL - Licence ST-A 1ère année 2005-2006 Initiation à la programmation TP 1 Objectifs du TP Ce TP a pour but de vous faire découvrir l environnement de travail que vous utiliserez dans le cadre des TP

Plus en détail

Interfaces graphiques avec l API Swing

Interfaces graphiques avec l API Swing Interfaces graphiques avec l API Swing Les Swing Les classes graphiques Swing dérivent de la classe JComponent, qui hérite ellemême de la classe AWT (Abstract Window Toolkit). Tous les composants Swing

Plus en détail

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1 Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1 B. Baert & F. Ludewig Bruno.Baert@ulg.ac.be - F.Ludewig@ulg.ac.be Qu est-ce que la programmation? Programmer Ecrire un

Plus en détail

Modéliser ses fenêtres avec Qt Designer

Modéliser ses fenêtres avec Qt Designer Modéliser ses fenêtres avec Qt Designer A force d'écrire le code de vos fenêtres, vous devez peut-être commencer à trouver ça long et répétitif. C'est amusant au début, mais au bout d'un moment on en a

Plus en détail

Mini_guide_Isis_v6.doc le 10/02/2005 Page 1/15

Mini_guide_Isis_v6.doc le 10/02/2005 Page 1/15 1 Démarrer... 2 1.1 L écran Isis... 2 1.2 Les barres d outils... 3 1.2.1 Les outils d édition... 3 1.2.2 Les outils de sélection de mode... 4 1.2.3 Les outils d orientation... 4 2 Quelques actions... 5

Plus en détail

Organiser le disque dur Dossiers Fichiers

Organiser le disque dur Dossiers Fichiers Ce document contient des éléments empruntés aux pages d aide de Microsoft Organiser le disque dur Dossiers Fichiers Généralités La connaissance de la logique d organisation des données sur le disque dur

Plus en détail

TIC. Tout d abord. Objectifs. L information et l ordinateur. TC IUT Montpellier

TIC. Tout d abord. Objectifs. L information et l ordinateur. TC IUT Montpellier Tout d abord TIC TC IUT Montpellier Nancy Rodriguez Destruel Dans la salle de cours (et partout ailleurs ) : Ponctualité et assiduité exigées Ne pas manger, ni boire, ni dormir, ni travailler à autre chose

Plus en détail

Indiquer l'espace libre sur le disque dur

Indiquer l'espace libre sur le disque dur ordinateur les plus Indiquer l'espace libre sur le disque dur - Nettoyer le disque dur - Défragmenter le disque dur Graver un CD ou un DVD - Installer un antivirus - Désinstaller un programme Copier des

Plus en détail

SolidWorks edrawings et publications

SolidWorks edrawings et publications SolidWorks edrawings et publications Ce tutorial a pour but de vous expliquer ce qu est edrawings et ce que ce format de fichier peut vous rendre comme services, puis de vous expliquer les différentes

Plus en détail

Premiers pas avec VMware Fusion. VMware Fusion pour Mac OS X

Premiers pas avec VMware Fusion. VMware Fusion pour Mac OS X Premiers pas avec VMware Fusion VMware Fusion pour Mac OS X 2 Premiers pas avec VMware Fusion Premiers pas avec VMware Fusion Élément : FR-000371-00 La dernière documentation technique est disponible sur

Plus en détail

Malgré son aspect spartiate, Freeplane offre de nombreuses fonctionnalités en particulier dans le domaine de la diffusion des cartes sur le Web.

Malgré son aspect spartiate, Freeplane offre de nombreuses fonctionnalités en particulier dans le domaine de la diffusion des cartes sur le Web. Création d une carte heuristique avec Freeplane Version : 1.1.3 Barre de menus Barre d outils Barre des touches de fonctions Espace de travail Barre d icônes Éditeur de notes Freeplane est un logiciel

Plus en détail

Once the installation is complete, you can delete the temporary Zip files..

Once the installation is complete, you can delete the temporary Zip files.. Sommaire Installation... 2 After the download... 2 From a CD... 2 Access codes... 2 DirectX Compatibility... 2 Using the program... 2 Structure... 4 Lier une structure à une autre... 4 Personnaliser une

Plus en détail

Découvrir l'ordinateur (niveau 2)

Découvrir l'ordinateur (niveau 2) I. Module Initiation Découvrir l'ordinateur (niveau 2) Médiathèque de Haguenau - mediatheque.ville-haguenau.fr Espace Cyber-base de la médiathèque de Haguenau 1 Sommaire Sommaire 2 I. Rappel : Comment

Plus en détail

Fonctionnement de Windows XP Mode avec Windows Virtual PC

Fonctionnement de Windows XP Mode avec Windows Virtual PC Fonctionnement de Windows XP Mode avec Windows Virtual PC Guide pratique pour les petites entreprises Table des matières Section 1 : présentation de Windows XP Mode pour Windows 7 2 Section 2 : démarrage

Plus en détail

INTERWRITE Workspace

INTERWRITE Workspace INTERWRITE Workspace Prêt à fonctionner 1. Allumer le tableau blanc (interrupteur sur le côté). 2. Allumer le vidéoprojecteur (voyant vert). 3. Brancher sur l ordinateur : le câble ou la clé bluetooth

Plus en détail

Cours. Cours 8 : Révisions. Importance. Interface homme-machine

Cours. Cours 8 : Révisions. Importance. Interface homme-machine Cours 1) Introduction Définitions Histoire Cours 8 : Révisions jgarcia@ircam.fr 2) Programmation des interfaces graphiques principes de conception 3) MVC Java2D Styles d interaction 4) Interaction graphique

Plus en détail

Licence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Licence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... Université Paris 7 Programmation Objet Licence Bio Informatique Année 2004-2005 TD n 1 - Correction Premiers pas Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... 1. Enregistrez

Plus en détail

Dans l idéal, ceci devrait être fait en amont pour chaque image envoyée sur l espace de stockage de votre site internet.

Dans l idéal, ceci devrait être fait en amont pour chaque image envoyée sur l espace de stockage de votre site internet. 1- Optimiser le poids de votre image : Dans l idéal, ceci devrait être fait en amont pour chaque image envoyée sur l espace de stockage de votre site internet. Tous les types d utilisateurs (auteur, publicateur,

Plus en détail

Cahier n o 6. Mon ordinateur. Fichiers et dossiers Sauvegarde et classement

Cahier n o 6. Mon ordinateur. Fichiers et dossiers Sauvegarde et classement Cahier n o 6 Mon ordinateur Fichiers et dossiers Sauvegarde et classement ISBN : 978-2-922881-10-3 2 Table des matières Fichiers et dossiers Sauvegarde et classement La sauvegarde 4 Enregistrer 4 De quelle

Plus en détail

Sélection du contrôleur

Sélection du contrôleur Démo CoDeSys - 1 - 1. Configuration de l environnement de travail : Lancer le logiciel CoDeSys Fichier Nouveau Lors de la première utilisation, une boîte de dialogue apparaît permettant la sélection du

Plus en détail

Utilisation de l éditeur.

Utilisation de l éditeur. Utilisation de l éditeur. Préambule...2 Configuration du navigateur...3 Débloquez les pop-up...5 Mise en évidence du texte...6 Mise en évidence du texte...6 Mise en page du texte...7 Utilisation de tableaux....7

Plus en détail

Support de formation Notebook

Support de formation Notebook Support de formation Notebook Guide de l utilisateur du tableau interactif SMART Board Table des matières Le Tableau Blanc Interactif... 1 Comprendre le fonctionnement du TBI... 1 Utiliser le plumier

Plus en détail

Contenu Windows 8 MODULE 1 AVANT-PROPOS MODULE 2 INTRODUCTION À WINDOWS 8 MODULE 4 APPLICATIONS WINDOWS 8 PARTIE 1 MODULE 3 PARAMÈTRES DE WINDOWS 8

Contenu Windows 8 MODULE 1 AVANT-PROPOS MODULE 2 INTRODUCTION À WINDOWS 8 MODULE 4 APPLICATIONS WINDOWS 8 PARTIE 1 MODULE 3 PARAMÈTRES DE WINDOWS 8 Contenu Windows 8 MODULE 1 AVANT-PROPOS CLAVIER SOURIS TERMINOLOGIE MODULE 2 INTRODUCTION À WINDOWS 8 SYSTÈME D EXPLOITATION WINDOWS 8 VERSIONS DE WINDOWS 8 ENVIRONNEMENT DE WINDOWS 8 ÉCRAN D ACCUEIL Démarrer

Plus en détail

Introduction au langage C

Introduction au langage C Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les

Plus en détail

MEMENTO D'UTILISATION Du T.N.I. SmartBoard (Version 10.0.130)

MEMENTO D'UTILISATION Du T.N.I. SmartBoard (Version 10.0.130) CRDP de l académie de Versailles Mission TICE Médiapôles mediapoles @crdp.ac-versailles.fr MEMENTO D'UTILISATION Du T.N.I. SmartBoard (Version 10.0.130) Mars 2009 584, rue Fourny 78530 Buc Tél. 01 39 45

Plus en détail

as Architecture des Systèmes d Information

as Architecture des Systèmes d Information Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes

Plus en détail

Guide d utilisation. Version 1.1

Guide d utilisation. Version 1.1 Guide d utilisation Version 1.1 Guide d utilisation Version 1.1 OBJECTIF LUNE Inc. 2030 boulevard Pie-IX, bureau 500 Montréal (QC) Canada H1V 2C8 +1 514-875-5863 sales@ca.objectiflune.com http://captureonthego.objectiflune.com

Plus en détail

ndv access point : Utilisation

ndv access point : Utilisation NAP10-MU-121207-fr ndv access point : Utilisation www.neocoretech.com ndv AP Plus qu un simple protocole de déport d affichage, ndv AP est une solution complète pour vos points d accès offrant l affichage

Plus en détail

Tutoriel code::blocks

Tutoriel code::blocks Tutoriel code::blocks E. Lunéville 2006 Le logiciel code::blocks fait partie des logiciels de type EDI (Environnement de Développement Intégré, IDE en anglais) pour le langage C++. Il est multiplateforme

Plus en détail

MANUEL TBI - INTERWRITE

MANUEL TBI - INTERWRITE MANUEL TBI - INTERWRITE TBIIW TITRE Manuel InterWrite WorkSpace INTITULE Manuel d'utilisation du logiciel InterWrite accompagnant le tableau blanc interactif CALCOMP OBJECTIF Aide mémoire sur les fonctionnalités

Plus en détail

l'ordinateur les bases

l'ordinateur les bases l'ordinateur les bases Démarrage de l'ordinateur - Le bureau, mon espace de travail - J'utilise la souris - Ouvertes ou fermées, les fenêtres - Dans l'ordinateur, tout est fichier - Le clavier : écrire,

Plus en détail

Comment sélectionner des sommets, des arêtes et des faces avec Blender?

Comment sélectionner des sommets, des arêtes et des faces avec Blender? Comment sélectionner des sommets, des arêtes et des faces avec Blender? VVPix v 1.00 Table des matières 1 Introduction 1 2 Préparation d une scène test 2 2.1 Ajout d objets dans la scène.........................................

Plus en détail

Contenu Microsoft Windows 8.1

Contenu Microsoft Windows 8.1 Contenu Microsoft Windows 8.1 MODULE 1 AVANT-PROPOS CLAVIER SOURIS TERMINOLOGIE Modifier l apparence de l écran d accueil Modifier l avatar du compte FERMER UNE SESSION WINDOWS Redémarrer l ordinateur

Plus en détail

L informatique en BCPST

L informatique en BCPST L informatique en BCPST Présentation générale Sylvain Pelletier Septembre 2014 Sylvain Pelletier L informatique en BCPST Septembre 2014 1 / 20 Informatique, algorithmique, programmation Utiliser la rapidité

Plus en détail

Le logiciel de création de site internet IZISPOT est un outil très puissant et qui est assez simple après quelques temps d utilisation.

Le logiciel de création de site internet IZISPOT est un outil très puissant et qui est assez simple après quelques temps d utilisation. 1 Le logiciel de création de site internet IZISPOT est un outil très puissant et qui est assez simple après quelques temps d utilisation. Voici un mode opératoire qui vous guidera dans l utilisation de

Plus en détail

Manuel d utilisation email NETexcom

Manuel d utilisation email NETexcom Manuel d utilisation email NETexcom Table des matières Vos emails avec NETexcom... 3 Présentation... 3 GroupWare... 3 WebMail emails sur internet... 4 Se connecter au Webmail... 4 Menu principal... 5 La

Plus en détail

Optimiser pour les appareils mobiles

Optimiser pour les appareils mobiles chapitre 6 Optimiser pour les appareils mobiles 6.1 Créer un site adapté aux terminaux mobiles avec jquery Mobile... 217 6.2 Transformer son site mobile en application native grâce à PhoneGap:Build...

Plus en détail

Introduction à Windows 8

Introduction à Windows 8 Introduction à Windows 8 Windows 8 est aujourd hui le dernier Système d exploitation de Microsoft. Ce système n étant pas destiner exclusivement au Oridnateur (il est également installé sur certaines tablettes

Plus en détail

Initiation à linfographie

Initiation à linfographie Ce support de cours de l Agence universitaire de la Francophonie est distribué sous licence GNU FDL. Permission vous est donnée de copier, distribuer et/ou modifier ce document selon les termes de la Licence

Plus en détail

GUIDE D UTILISATION DU LOGICIEL DE TELE-MAINTENANCE. TEAM VIEWER Version 7.

GUIDE D UTILISATION DU LOGICIEL DE TELE-MAINTENANCE. TEAM VIEWER Version 7. www.teamviewer.com/fr/download/index.aspx Guide de mise en place de la télé-maintenance GUIDE D UTILISATION DU LOGICIEL DE TELE-MAINTENANCE TEAM VIEWER Version 7. Ce tutoriel vous décrit pas-à-pas la procédure

Plus en détail

GUIDE DE DÉMARRAGE. SitagriPro Infinite FINANCEAGRI. Un service. c o r p o r a t e

GUIDE DE DÉMARRAGE. SitagriPro Infinite FINANCEAGRI. Un service. c o r p o r a t e GUIDE DE DÉMARRAGE SitagriPro Infinite Un service FINANCEAGRI c o r p o r a t e SOMMAIRE ÉTAPE 1 : Installation... p.3 1. Introduction 2. Connexion à SitagriPro Infinite ÉTAPE 2 : Identification... p.5

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

Avant-propos FICHES PRATIQUES EXERCICES DE PRISE EN MAIN CAS PRATIQUES

Avant-propos FICHES PRATIQUES EXERCICES DE PRISE EN MAIN CAS PRATIQUES Avant-propos Conçu par des pédagogues expérimentés, son originalité est d être à la fois un manuel de formation et un manuel de référence complet présentant les bonnes pratiques d utilisation. FICHES PRATIQUES

Plus en détail

MÉDICLICK! STUDIO 3 GESTION DES IMAGES ET PIÈCES JOINTES SOMMAIRE

MÉDICLICK! STUDIO 3 GESTION DES IMAGES ET PIÈCES JOINTES SOMMAIRE MÉDICLICK! STUDIO 3 GESTION DES IMAGES ET PIÈCES JOINTES SOMMAIRE COMMENT AJOUTER DES IMAGES OU DES PIECES JOINTES? COMMENT SUPPRIMER DES IMAGES OU DES PIECES JOINTES? COMMENT CHANGER L APPARENCE DE LA

Plus en détail

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN fbertin@neotilus.com

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN fbertin@neotilus.com Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184 Frédéric BERTIN fbertin@neotilus.com Présentaion : Mobile 3D Graphics API JSR 184 M3G :présentation Package optionnel de l api J2ME. Prend

Plus en détail

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

Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée) Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée) Propriétés Description Intitulé long Formation concernée Matière Présentation Développement d un logiciel de messagerie

Plus en détail

INTRODUCTION AU CMS MODX

INTRODUCTION AU CMS MODX INTRODUCTION AU CMS MODX Introduction 1. Créer 2. Organiser 3. Personnaliser UNE PETITE INTRODUCTION QUEST-CE QU UN CMS? CMS est l acronyme de Content Management System. C est outil qui vous permet de

Plus en détail

Le langage C. Séance n 4

Le langage C. Séance n 4 Université Paris-Sud 11 Institut de Formation des Ingénieurs Remise à niveau INFORMATIQUE Année 2007-2008 Travaux pratiques d informatique Le langage C Séance n 4 But : Vous devez maîtriser à la fin de

Plus en détail

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

Programmation C. Apprendre à développer des programmes simples dans le langage C Programmation C Apprendre à développer des programmes simples dans le langage C Notes de cours sont disponibles sur http://astro.u-strasbg.fr/scyon/stusm (attention les majuscules sont importantes) Modalités

Plus en détail

Le cas «BOURSE» annexe

Le cas «BOURSE» annexe Le cas «BOURSE» Le cas BOURSE sera réalisé en liaison avec les fiches ressources n 1 à n 5. Objectifs pédagogiques : - se familiariser en douceur avec les manipulations de base (utilisation des icônes,

Plus en détail

Notes pour l utilisation d Expression Web

Notes pour l utilisation d Expression Web EICW Formation Webmaster Notes pour l utilisation d Expression Web G. Barmarin 2008-2009 1 /21 Table des matières 1 Introduction... 3 2 Installer Expression Web... 4 3 Explorer et personnaliser l interface

Plus en détail

Qu est-ce qu un Ordinateur

Qu est-ce qu un Ordinateur Qu est-ce qu un Ordinateur Différents types d ordinateurs existent : ordinateur de bureau, portable et micro-portable. Quelques soit l ordinateur que vous utilisez, les principes généraux sont les mêmes

Plus en détail

Mise en scène d un modèle dans l espace 3D

Mise en scène d un modèle dans l espace 3D CHAPITRE 3 Mise en scène d un modèle dans l espace 3D Blender permet de construire des espaces à la manière d une scène de théâtre. Pour cela, il présente dès l ouverture tout ce dont on a besoin : un

Plus en détail

Chapitre 22 Optimisation pour diffusion à l'écran, pour le web

Chapitre 22 Optimisation pour diffusion à l'écran, pour le web 1 1 9 9 7 7 Optimisation pour diffusion à l'écran, pour le web Diffusion pour le web........................ 31 Les paramètres avant l exportation................. 31 Optimisation pour le web......................

Plus en détail

Dans l Unité 3, nous avons parlé de la

Dans l Unité 3, nous avons parlé de la 11.0 Pour commencer Dans l Unité 3, nous avons parlé de la manière dont les designs sont créés dans des programmes graphiques tels que Photoshop sont plus semblables à des aperçus de ce qui va venir, n

Plus en détail

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation ING 01 LANGAGUE JAVA Durée : 21 heures 1090 HT / jour Dates : à définir en 2012 Concevoir et développer des programmes en langage Java Comprendre le fonctionnement de la machine virtuelle S approprier

Plus en détail

www.imprimermonlivre.com

www.imprimermonlivre.com 0 www.imprimermonlivre.com Composition d une couverture avec Word L objectif de ce guide est de vous proposer un mode opératoire pour créer une couverture avec Word. Nous vous rappelons toutefois que Word

Plus en détail

Arborescence et création de dossiers

Arborescence et création de dossiers Arborescence et création de dossiers Point35 Multimédia, Argentré du Plessis L arborescence Un ordinateur est rangé en arborescence de dossier et fichier. L arborescence désigne l organisation des données.

Plus en détail

TP1 : Initiation à Java et Eclipse

TP1 : Initiation à Java et Eclipse TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les

Plus en détail

Cours 420-123-LG : Administration de réseaux et sécurité informatique. Dans les Paramètres Système onglet Processeur, le bouton "Activer PAE/NX"

Cours 420-123-LG : Administration de réseaux et sécurité informatique. Dans les Paramètres Système onglet Processeur, le bouton Activer PAE/NX Laboratoire 02 Installation de Windows Server 2008 R2 Standard Edition Précision concernant les équipes de travail Afin de rationaliser les équipements disponibles au niveau du laboratoire, les équipes

Plus en détail

Introduction à C++ et à wxwidgets

Introduction à C++ et à wxwidgets Introduction à C++ et à wxwidgets Master IGC 1ère année Année universitaire 2011/2012 Christophe Renaud Version 1.5 19/09/2011 Introduction Objectifs du cours Introduction au langage objet C++ Introduction

Plus en détail

L espace de travail de Photoshop

L espace de travail de Photoshop L espace de travail de Photoshop 1 Au cours de cette leçon, vous apprendrez à : ouvrir les fichiers Photoshop ; sélectionner et employer certains des outils dans le panneau Outils ; définir les options

Plus en détail

iil est désormais courant de trouver sur Internet un document

iil est désormais courant de trouver sur Internet un document Matériels et systèmes L Acrobat qui cherche dans les PDF Michel NARCY - Formateur TICE et Médialog Bulletin officiel, programmes d enseignement, articles de quotidiens ou de revues scientifiques... De

Plus en détail

Créer et partager des fichiers

Créer et partager des fichiers Créer et partager des fichiers Le rôle Services de fichiers... 246 Les autorisations de fichiers NTFS... 255 Recherche de comptes d utilisateurs et d ordinateurs dans Active Directory... 262 Délégation

Plus en détail

Guide de l utilisateur Mikogo Version Windows

Guide de l utilisateur Mikogo Version Windows Guide de l utilisateur Mikogo Version Windows Table des matières Création d un compte utilisateur 3 Téléchargement et installation 4 Démarrer une session 4 Joindre une session 5 Fonctionnalités 6 Liste

Plus en détail

I Récupération de l'identifiant

I Récupération de l'identifiant I Récupération de l'identifiant Saiga Informatique Logiciel imuse Extranet usagers Le personnel administratif communique à l'usager son identifiant par email ou par courrier, ainsi que l'url de connexion.

Plus en détail

Le cas «BOURSE» annexe

Le cas «BOURSE» annexe Le cas «BOURSE» Le cas BOURSE sera réalisé en liaison avec les fiches ressources n 1 à n 5. Objectifs pédagogiques : - se familiariser en douceur avec les manipulations de base (utilisation des icônes,

Plus en détail

AIDE à l utilisation du cédérom «L athlétisme à l école» Niveau Primaire SOMMAIRE

AIDE à l utilisation du cédérom «L athlétisme à l école» Niveau Primaire SOMMAIRE AIDE à l utilisation du cédérom «L athlétisme à l école» Niveau Primaire SOMMAIRE Arborescence du cédérom (page 2) Lancement du Cédérom et configuration minimale de votre ordinateur (page 3). Loupe, page

Plus en détail

Studio. HERITIER Emmanuelle PERSYN Elodie. SCHMUTZ Amandine SCHWEITZER Guillaume

Studio. HERITIER Emmanuelle PERSYN Elodie. SCHMUTZ Amandine SCHWEITZER Guillaume Studio HERITIER Emmanuelle PERSYN Elodie SCHMUTZ Amandine SCHWEITZER Guillaume Cours R Présentation projet 10/10/2013 Introduction RStudio est une interface créé par JJ Allaire Elle est sortie le 11 Février

Plus en détail

Les pannes non bloquantes ou aléatoires :

Les pannes non bloquantes ou aléatoires : Dans cet article nous allons voir comment dépanner son ordinateur portable. Toutefois nous nous intéresseront uniquement aux problèmes et aux réparations qui peuvent être abordées facilement par un utilisateur

Plus en détail

Quelques outils pour le logiciel «Tux Paint»

Quelques outils pour le logiciel «Tux Paint» Quelques outils pour le logiciel «Tux Paint» Version Window's 0.9.21 Télécharger la version gratuite : http://www.tux Paint.org/download/ Pascale-Dominique Chaillez Lynda O Connell Conseillères pédagogiques

Plus en détail

Guide Utilisateur ArkadinAnywhere

Guide Utilisateur ArkadinAnywhere Les arkadin services services arkadin Les services arkadin ArkadinAnywhere est une solution de webconférence économique et simple d utilisation, plus spécifiquement pour les applications de webinars, au

Plus en détail

Modifier les propriétés d'un widget

Modifier les propriétés d'un widget La "fenêtre-bouton" que nous avons réalisée dans le chapitre précédent était un premier pas. Certaines question se posent naturellement : Par exemple, comment modifier la taille du bouton? Comment placer

Plus en détail

pcon.planner 6 Préparer et présenter une implantation en toute simplicité

pcon.planner 6 Préparer et présenter une implantation en toute simplicité pcon.planner 6 Préparer et présenter une implantation en toute simplicité Sommaire 1. Installation :... 3 2. Démarrer le logiciel :... 3 3. Interface :... 3 4. Naviguer :... 4 5. Réaliser une implantation

Plus en détail

MAILING KOMPOZER... 2 CREEZ UNE PAGE... 2 FORMAT DE LA PAGE... 2 AJOUTER DU TEXTE SUR UNE PAGE... 4

MAILING KOMPOZER... 2 CREEZ UNE PAGE... 2 FORMAT DE LA PAGE... 2 AJOUTER DU TEXTE SUR UNE PAGE... 4 MAILING Table des matières KOMPOZER... 2 CREEZ UNE PAGE... 2 FORMAT DE LA PAGE... 2 AJOUTER DU TEXTE SUR UNE PAGE... 4 INSERER UNE IMAGE (OU UNE PHOTO) PAS DE COPIER / COLLER... 5 INSERER UN TABLEAU...

Plus en détail

KompoZer. Composition du site : _ une page d'accueil : index.html. _ une page pour la théorie : theorie.html. _ une page pour les photos : photos.

KompoZer. Composition du site : _ une page d'accueil : index.html. _ une page pour la théorie : theorie.html. _ une page pour les photos : photos. KompoZer Créer un site «simple» Composition du site : _ une page d'accueil : index.html _ une page pour la théorie : theorie.html _ une page pour les photos : photos.html _ une page avec la galerie : galerie.html

Plus en détail