Cours:QT : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
({{Bleu|attributs}})
Ligne 1 : Ligne 1 :
 +
 +
={{Rouge|signal/slot}}=
 +
 +
La page [http://doc.qt.io/qt-5/signalsandslots.html signal&slots] de la documentation QT peut être intéressante à consulter.
 +
 +
=={{Bleu|relier signal et slot}}==
 +
 +
On utilise la fonction {Rouge|connect}} :
 +
 +
connect( objet émetteur, signal émis , objet récepteur, signal reçu );
 +
 +
ex :
 +
<source lang=cpp>
 +
connect( ui->monBouton, SIGNAL( clicked() ), this, SLOT( monAction() ));
 +
</source>
 +
 +
{{Rouge|Attention}}, il faut utiliser l'adresse de l'objet, donc si vous n'utilisez pas de pointeur :
 +
&monObjet
 +
 +
<source lang=cpp>
 +
....
 +
Lampe maLampe;
 +
....
 +
connect( ui->monBouton, SIGNAL( clicked() ), &maLampe , SLOT( monAction() ));
 +
</source>
 +
 +
 +
 +
={{Rouge|graphisme}}=
 +
 +
=={{Bleu|Modifier la couleur d'un bouton}}==
 +
 +
On utilise la méthode setStyleSheet :
 +
<source lang=cpp>
 +
monBouton.setStyleSheet("background-color: black;");
 +
</source>
 +
 +
Dans une application graphique QT classique, l'objet {{Rouge|ui}} représente le "conteneur" des widgets. On aura donc :
 +
<source lang=cpp>
 +
ui->myPushButton->setStyleSheet("background-color: red;");
 +
</source>
 +
 +
La liste des couleurs prédéfinies se trouve sur [http://doc.qt.io/qt-5/qt.html#GlobalColor-enum le site de documentation de QT].
 +
 +
 
={{Rouge|Classe}}=
 
={{Rouge|Classe}}=
  
Ligne 106 : Ligne 151 :
 
</source>
 
</source>
 
|}
 
|}
 
={{Rouge|signal/slot}}=
 
 
La page [http://doc.qt.io/qt-5/signalsandslots.html signal&slots] de la documentation QT peut être intéressante à consulter.
 
 
=={{Bleu|relier signal et slot}}==
 
 
On utilise la fonction {Rouge|connect}} :
 
 
connect( objet émetteur, signal émis , objet récepteur, signal reçu );
 
 
ex :
 
<source lang=cpp>
 
connect( ui->monBouton, SIGNAL( clicked() ), this, SLOT( monAction() ));
 
</source>
 
 
{{Rouge|Attention}}, il faut utiliser l'adresse de l'objet, donc si vous n'utilisez pas de pointeur :
 
&monObjet
 
 
<source lang=cpp>
 
....
 
Lampe maLampe;
 
....
 
connect( ui->monBouton, SIGNAL( clicked() ), &maLampe , SLOT( monAction() ));
 
</source>
 
 
 
 
={{Rouge|graphisme}}=
 
 
=={{Bleu|Modifier la couleur d'un bouton}}==
 
 
On utilise la méthode setStyleSheet :
 
<source lang=cpp>
 
monBouton.setStyleSheet("background-color: black;");
 
</source>
 
 
Dans une application graphique QT classique, l'objet {{Rouge|ui}} représente le "conteneur" des widgets. On aura donc :
 
<source lang=cpp>
 
ui->myPushButton->setStyleSheet("background-color: red;");
 
</source>
 
 
La liste des couleurs prédéfinies se trouve sur [http://doc.qt.io/qt-5/qt.html#GlobalColor-enum le site de documentation de QT].
 

Version du 12 novembre 2017 à 11:08

signal/slot

La page signal&slots de la documentation QT peut être intéressante à consulter.

relier signal et slot

On utilise la fonction {Rouge|connect}} :

connect( objet émetteur, signal émis , objet récepteur, signal reçu );

ex :

 connect( ui->monBouton, SIGNAL( clicked() ), this, SLOT( monAction() ));

Attention, il faut utiliser l'adresse de l'objet, donc si vous n'utilisez pas de pointeur :

&monObjet
 ....
 Lampe maLampe;
 ....
 connect( ui->monBouton, SIGNAL( clicked() ), &maLampe , SLOT( monAction() ));


graphisme

Modifier la couleur d'un bouton

On utilise la méthode setStyleSheet :

 monBouton.setStyleSheet("background-color: black;");

Dans une application graphique QT classique, l'objet ui représente le "conteneur" des widgets. On aura donc :

 ui->myPushButton->setStyleSheet("background-color: red;");

La liste des couleurs prédéfinies se trouve sur le site de documentation de QT.


Classe

attributs

Lorsqu'on définit sa propre classe, il convient d'initialiser les attributs. Ceci peut-être fait de 2 façons :

Valeur initiale fixe Valeur initiale variable
class MaClasse
{
public :
   MaClasse(); // constructeur

private :
   // l'attribut x est initialisé à la valeur 5
   int x{5};

}
class MaClasse
{
public :
   MaClasse(int _x); // constructeur

private :
   // l'attribut x sera initialisé par le constructeur
   int x;
}

// constructeur avec initialisation de l'attribut x :
MaClasse::MaClasse(int _x)
                  : x{_x}
{
}
#include "maclasse.h>

MaClasse objet1;
#include "maclasse.h>

MaClasse objet2{5};


Un attribut peut bien évidemment être de n'importe quel type, en particulier d'une de vos autres classes. Dans ce cas, on utilisera au besoin une référence sur l'objet.

ex :

class FirstClasse
{
public :
  FirstClasse(float _y); //constructeur
private :
  float x{2.5}; //initialisation de x
  float y;
}

//initialisation de y dans le constructeur
FirstClasse::FirstClasse(float _y)
                         : y{_y}
{
}

class SecondeClasse
{
public :
  SecondeClasse(FirstClasse & _obj1); // constructeur
private :
  FirstClasse & obj1;     //
  FirstClasse obj2{1.2}; // initialisation de obj2
}

//initialisation de obj1 dans le constructeur
SecondeClasse::SecondeClasse(FirstClasse & _obj1)
                             : obj1{_obj1}
{
}
#include ....

FirstClasse monFirstObjet{6};
SecondeClasse monSecondeObjet{monFirstObjet};