3.2.1 Le fichier FenetreTest.h

Ici nous faisons du Qt et j'insiste sur le fait que ce fichier s’appelle FenetreTest.h avec des majuscules, non que les majuscules soient indispensables, mais il faut que les fichiers .h et .cpp de la classe aient le même nom que celle-ci pour que la fonction qt4_automoc puisse s'y retrouver.

Allons-y pour l'écriture du fichier FenetreTest.h.

Le fichier de base est comme d'habitude :

1
2
3
4
5
6
#ifndef __FENETRE_TEST_H__
#define __FENETRE_TEST_H__



#endif

Ensuite nous allons avoir besoin de QApplication, de QMainWindow et QPushButton :

1
2
3
4
5
6
7
8
9
10
11
#ifndef __FENETRE_TEST_H__
#define __FENETRE_TEST_H__

#include <QtGui/QApplication>
#include <QtGui/QMainWindow>
#include <QtGui/QPushButton>




#endif

Mais ce n'est pas fini, il va falloir mettre le bouton dans la fenêtre, pour ça il faut utiliser ce que l'on appel un layout, nous utiliserons un layout vertical appelé : QVBoxLayout.

1
2
3
4
5
6
7
8
9
10
11
#ifndef __FENETRE_TEST_H__
#define __FENETRE_TEST_H__

#include <QtGui/QApplication>
#include <QtGui/QMainWindow>
#include <QtGui/QPushButton>
#include <QtGui/QVBoxLayout>



#endif

Maintenant nous pouvons déclarer la classe FenetreTest :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#ifndef __FENETRE_TEST_H__
#define __FENETRE_TEST_H__

#include <QtGui/QApplication>
#include <QtGui/QMainWindow>
#include <QtGui/QPushButton>
#include <QtGui/QVBoxLayout>

class FenetreTest : public QMainWindow
{
	Q_OBJECT
	public:
		FenetreTest();
		virtual ~FenetreTest();

};

#endif

Vous voyez où il faut mettre la macro Q_OBJECT.

Maintenant nous allons créer une fonction d'initialisation, déclarer le bouton et créer un QWidget* :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#ifndef __FENETRE_TEST_H__
#define __FENETRE_TEST_H__

#include <QtGui/QApplication>
#include <QtGui/QMainWindow>
#include <QtGui/QPushButton>
#include <QtGui/QVBoxLayout>


class FenetreTest : public QMainWindow
{
	Q_OBJECT
	public:
		FenetreTest();
		virtual ~FenetreTest();
	
	private:
		void initialisationFenetreTest();
		
		QPushButton* p_boutonQuitter;
		
		QWidget* p_mainWidget;
};

#endif

À quoi sert le QWidget* p_mainWidget; ?

C'est le widget principal de l'application (qui n'existe que dans QMainWindow et pas dans QDialog).

Et pourquoi * ?

Ça c'est typique de Qt, toutes les classes sont créées avec des pointeurs et sont ajoutés aux classes parentes avec des pointeurs.