• Aucun résultat trouvé

Int´egrer Inventor et Qt

N/A
N/A
Protected

Academic year: 2022

Partager "Int´egrer Inventor et Qt"

Copied!
16
0
0

Texte intégral

(1)

Int´ egrer Inventor et Qt

Jean-Yves Didier

Universit´e d’Evry

9 f´evrier 2010

(2)

Qt : pr´ esentation

Biblioth`eque C++ destin´ee aux IHM, oeuvre de la soci´et´e Trolltech (rachet´ee par Nokia en 2008) ;

Licence QPL/GPL :

eveloppement avec la version GPL, travail d´eriv´e sous GPL ; eveloppement propri´etaire, utilisation de la licence

propri´etaire.

Multi plate-forme : X11 / Windows :

→ fournit une couche d’abstraction par rapport `a l’OS.

BindingsInventor/Qt : biblioth`equeSoQt ouQuarter.

Plusieurs versions cohabitent actuellement :

Qt 3.3.8b (KDE3) – La version vue dans ces transparents ; Qt 4.x (KDE4).

(3)

Gestion des ´ ev` enements

Qt repose sur le conceptionsignal/slot :

Il s’agit d’un syst`eme decallbacksd´eguis´e ;

Signal : appel `a une fonction decallbackpotentielle ; Slot: fonction decallback;

Signaux et slots peuvent ˆetre connect´es/d´econnect´es dynamiquement ;

Toute classe d´erivant de QObject peut impl´ementer ce m´ecanisme.

(4)

Cr´ eer ses propres signaux/slots

Cr´eer une classe d´erivant de QObject

#i n c l u d e <q o b j e c t . h>

c l a s s Toto :p u b l i c Q Ob je ct // ou c l a s s e d ´e r i v a n t de Q Ob je ct

{

Q OBJECT // n ´e c e s s a i r e p o u r l e m´eca nism e s i g n a l / s l o t p u b l i c:

Toto ( . . . ) ;

p u b l i c s l o t s : // p e u v e n t ˆe t r e p r i v a t e ou p r o t e c t e d v o i d s l o t A ( ) ; // v o i d : t y p e de r e t o u r i m p o s´e v o i d s l o t B (i n t a ) ;

s i g n a l s :

v o i d s i g n a l A ( ) ; // v o i d : t y p e de r e t o u r i m p o s´e };

(5)

Cr´ eer ses propres signaux/slots

Un slot a une impl´ementation ; Un signal n’a pas d’impl´ementation ! Emettre un signal :´

→ emit monSignal(param1,param2,...);

Connecter un signal et un slot :

connect(objectA, SIGNAL(monSignal(int,int)), objectB, SLOT(monSlot(int,int)));

Utilisation des macros SLOT et SIGNAL ; objectA et objectB sont de type QObject* ;

les signatures des signaux et des slots doivent correspondre.

(6)

Les widgets Qt

Pas de liste exhaustive ici, juste les principaux ;

D´erivent d’une classe QWidget qui d´erive de QObject

→ chacun poss`ede des signaux et des slots !

Widgets organis´es en hi´erarchie : les fenˆetres, menus etlayout sont les parents d’autres widgets ;

Pour chaque widget, nous verrons : le constructeur ;

l’aspect ;

les principaux signaux et slots.

(7)

Les widgets Qt

QWidget: la classe m`ere

QWidget(QWidget* parent=0);

Slots :

void show(); void move(int, int);

void hide(); void resize(int, int);

void enabled(bool);

QLabel: affichage de texte

QLabel(QString text, QWidget* parent=0);

Slots :

void setText(Qstring);

void clear();

(8)

Les widgets Qt

Les boutons

QPushButton: le bouton classique

QPushButton(QString text, QWidget* parent=0);

Signaux :

void clicked();

QCheckBox: la case `a cocher

QCheckBox(QString text, QWidget* parent=0);

Slots :

void setChecked(bool);

Signaux :

void clicked();

void toggled(bool);

(9)

Les widgets Qt

Les boutons

QButtonGroup: grouper les boutons radio

QButtonGroup(QString text, QWidget* parent=0);

Signaux :

void clicked(int);

QButtonRadio: le bouton radio

QRadioButton(QString text, QWidget* parent=0);

Slots :

void setChecked(bool);

Signaux :

void clicked();

void toggled(bool);

(10)

Les widgets Qt

Les listes

QListBox: liste en lecture seule

QListBox(QWidget* parent=0);

Slots :

void clear();

Signaux :

void selected(int);

void selected(QString);

QComboBox: liste d´eroulante (´editable)

QComboBox(QWidget* parent=0);

Signaux/slots : cf QListBox

(11)

Les widgets Qt

Saisir du texte

QLineEdit: pour du texte et des valeurs

QLineEdit(QString contents,QWidget* parent);

Slots :

void setText(QString);

void clear();

Signaux :

void textChanged(QString);

void returnPressed();

Pour des valeurs enti`eres ou flottantes : void setValidator(QValidator* );

QIntValidator,QDoubleValidator

(12)

Les widgets Qt

Spinner et slider

QSpinBox: spinner

QSpinBox(int min, int max, int step, QWidget*

parent=0);

Slots :

void setValue(int);

Signaux :

void valueChanged(int);

QSlider: ascenseurs

QSlider(int min, int max, int step, int v, Orientation ori={Qt::Vertical|Qt::Horizontal}, QWidget* parent=0 );

Signaux/slots : cf QSpinBox

(13)

Les widgets Qt

Fenˆetres et mise en page

QMainWindow: la fenˆetre principale

→ QMainWindow(QWidget* parent) ; Contient : Une barre de menu :QMenuBar;

Une barre d’´etat : QStatusBar; Un widget central :QWidget. Le widget central peut-ˆetre un layout:

en grille : QGrid; vertical : QVBox; horizontal : QHBox.

(14)

Utilitaires Qt

qmake: le gestionnaire de projets Qt

Capable de g´en´erer un Makefileou un projetVisual Studio suivant la plate-forme cible `a partir d’un projet (extension .pro).

N´ecessaire pour appeler les autres utilitaires Qt.

Exemple de fichier projet pour int´egrer Inventor

TEMPLATE = app SOURCES = cone.cpp

INCLUDEPATH+= $$system(soqt-config --includedir) LIBS += $$system(soqt-config --ldflags --libs)

Les autres utilitaires

moc – (Meta Object Compiler) : gestion des signaux et des slots ; uic – (UI Compiler) : interfaces g´en´er´ees par le designer.

(15)

La hi´ erarchie SoQt

(16)

A vous de jouer !

Références

Documents relatifs

On fait cela tant qu’il y a plusieurs ´el´ements dans le tableau.. Si le tableau est de taille impaire, son ´el´ement central

L’ensemble des fonctions en escalier (resp. Citons tout de mˆeme une preuve tr`es ´el´egante, qui consiste `a consid´erer l’ensemble X des x ∈ [a, b] tels qu’il existe

Somme de deux s´ eries enti` eres, produit de Cauchy de deux s´ eries enti` eres : minoration de leur rayon de convergence.. S´ erie enti` ere d’une variable r´ eelle : elle est

Indication: On pourra d´ ecomposer s(X ) en somme d’une s´ erie formelle “paire”.. et d’une s´ erie

U.P.N - Sup Galil´ ee Ann´ ee scolaire 2012-2013 Formation Ing´ enieursI. Harmonisation

Comme la convergence des deux s´eries enti`eres est absolue sur l’intersection de leurs disques de convergence, par le th´eor`eme sur les s´eries doubles leur produit de C AUCHY

GtkWidget* gtk_label_new(const gchar* str); crée un objet GtkLabel de libellé str void gtk_label_set_label(GtkLabel* label, const gchar* str); affecte le libellé str au label

[r]