Programmation d interfaces avec
|
|
- Thomas Carignan
- il y a 8 ans
- Total affichages :
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
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étailAUVRAY 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étailIHM2. 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étailWarren 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étailModé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étailGuide 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étailProgrammation 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 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étailAnne 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étailDé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étailTutorial 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étailINTRODUCTION 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étailTable 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étailManuel 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étail0.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étailUtilisation 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étailJava 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étailTP1 : 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étailPré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étailWINDOWS 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étailLogiciel 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étailInstallation 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étailInstallation 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étailUSTL - 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étailInterfaces 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étailIntroduction à 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étailModé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étailMini_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étailOrganiser 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étailTIC. 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étailIndiquer 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étailSolidWorks 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étailPremiers 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étailMalgré 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étailOnce 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étailDé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étailFonctionnement 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étailINTERWRITE 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étailCours. 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étailLicence 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étailDans 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étailCahier 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étailSé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étailUtilisation 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étailSupport 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étailContenu 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étailIntroduction 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étailMEMENTO 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étailas 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étailGuide 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étailndv 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étailTutoriel 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étailMANUEL 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étaill'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étailComment 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étailContenu 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étailL 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étailLe 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étailManuel 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étailOptimiser 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étailIntroduction à 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étailInitiation à 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étailGUIDE 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étailGUIDE 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étailProgrammer 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étailAvant-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étailMÉ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étailDé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étailDé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étailINTRODUCTION 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étailLe 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étailProgrammation 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étailLe 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étailNotes 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étailQu 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étailMise 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étailChapitre 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étailDans 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étailLANGAGUE 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étailwww.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étailArborescence 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étailTP1 : 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étailCours 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étailIntroduction à 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étailL 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étailiil 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étailCré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étailGuide 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étailI 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étailLe 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étailAIDE à 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étailStudio. 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étailLes 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étailQuelques 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étailGuide 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étailModifier 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étailpcon.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étailMAILING 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étailKompoZer. 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