Cours:QT : Différence entre versions
(→{{Rouge|graphisme}}) |
(→{{Bleu|attributs}}) |
||
| Ligne 110 : | Ligne 110 : | ||
Un attribut peut bien évidemment être de n'importe quel type, en particulier d'une de vos autres classes. | Un attribut peut bien évidemment être de n'importe quel type, en particulier d'une de vos autres classes. | ||
| − | Dans ce cas, on utilisera | + | Dans ce cas, on utilisera un pointeur sur l'objet. |
ex : | ex : | ||
| Ligne 121 : | Ligne 121 : | ||
{ | { | ||
public : | public : | ||
| − | FirstClasse( | + | FirstClasse(); //constructeur |
private : | private : | ||
| − | |||
| − | |||
} | } | ||
//initialisation de y dans le constructeur | //initialisation de y dans le constructeur | ||
| − | FirstClasse::FirstClasse( | + | FirstClasse::FirstClasse() |
| − | |||
{ | { | ||
} | } | ||
| Ligne 136 : | Ligne 133 : | ||
{ | { | ||
public : | public : | ||
| − | SecondeClasse(FirstClasse | + | SecondeClasse(FirstClasse * _obj1); // constructeur |
private : | private : | ||
| − | FirstClasse | + | FirstClasse * obj1; // |
| − | |||
} | } | ||
//initialisation de obj1 dans le constructeur | //initialisation de obj1 dans le constructeur | ||
| − | SecondeClasse::SecondeClasse(FirstClasse | + | SecondeClasse::SecondeClasse(FirstClasse * _obj1) |
| − | |||
{ | { | ||
| + | obj1 = _obj1; | ||
} | } | ||
</source> | </source> | ||
| Ligne 153 : | Ligne 149 : | ||
#include .... | #include .... | ||
| − | FirstClasse monFirstObjet | + | FirstClasse * monFirstObjet; |
| − | SecondeClasse monSecondeObjet | + | monFirstObjet = new FirstClasse(); |
| + | SecondeClasse * monSecondeObjet; | ||
| + | monSecondeObjet = new SecondeClasse(monFirstObjet); | ||
| + | |||
| + | ... | ||
</source> | </source> | ||
|} | |} | ||
Version du 12 novembre 2017 à 11:13
Sommaire
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.
Pour choisir dans l'espace RGB la couleur désirée, on peut faire de la façon suivante :
QString style = "background-color: rgb(%1, %2, %3);";
ui->myPushButton->setStyleSheet(style.arg(valRouge).arg(valeurVerte).arg(valeurBleu));
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 un pointeur sur l'objet.
ex :
class FirstClasse
{
public :
FirstClasse(); //constructeur
private :
}
//initialisation de y dans le constructeur
FirstClasse::FirstClasse()
{
}
class SecondeClasse
{
public :
SecondeClasse(FirstClasse * _obj1); // constructeur
private :
FirstClasse * obj1; //
}
//initialisation de obj1 dans le constructeur
SecondeClasse::SecondeClasse(FirstClasse * _obj1)
{
obj1 = _obj1;
}
|
#include ....
FirstClasse * monFirstObjet;
monFirstObjet = new FirstClasse();
SecondeClasse * monSecondeObjet;
monSecondeObjet = new SecondeClasse(monFirstObjet);
...
|