4.2 Le fichier TextEditor.h

Nous allons commencer comme d'habitude :

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



#endif

Ensuite on met les includes :

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

#include <stdio.h>
#include <stdlib.h>
#include <string>

#include <QtGui/QApplication>
#include <QtGui/QMainWindow>
#include <QtCore/QTextCodec>

#include <QtGui/QMenuBar>
#include <QtGui/QAction>

#include <QtGui/QTextEdit>
#include <QtGui/QVBoxLayout>



#endif

Heu, pourquoi on s'embête avec la std, Qt ne gère pas les ouvertures de fichiers ?

Et bien... si, mais pas en utf-8

Et l'inclusion de string alors ?

Nous avons besoin de std::string pour lire un fichier en utf-8 car les QString ne sont pas en utf-8, les codecs que nous avons ajouter permettent d'afficher de l'utf-8, mais pas de traiter de l'utf-8.

Passons à la déclaration de la classe :

1
2
3
4
5
6
7
8
class TextEditor : public QMainWindow
{
	Q_OBJECT
	public:
		TextEditor();
		virtual ~TextEditor();
	
};

Maintenant les fonctions privées. Là je vous conseil de séparer les allocations des différentes classe de votre application :

  • Une fonction qui initialise tout
  • Une fonction qui initialise les QActions
  • Une fonction qui initialise les QMenus
  • Une fonction qui initialise les QPushButtons (pour l'instant nous n'en avons pas)
  • Une fonction qui initialise les QWidgets

Avec un tel schéma vous allez gagner en clarté, et donc en efficacité.

Voilà les fonctions privées :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class TextEditor : public QMainWindow
{
	Q_OBJECT
	public:
		TextEditor();
		virtual ~TextEditor();
		
	private:
		void initialisationTextEditor();
		void initialisationActionTextEditor();
		void initialisationMenuTextEditor();
		void initialisationWidgetTextEditor();
		void saveFile(const QString & fileName);
		void openFile(const QString & fileName);
};

Il faut penser à créer des fonctions pour ouvrir et sauver les fichiers.

Ensuite les attributs privés :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class TextEditor : public QMainWindow
{
	Q_OBJECT
	public:
		TextEditor();
		virtual ~TextEditor();
		
	private:
		void initialisationTextEditor();
		void initialisationActionTextEditor();
		void initialisationMenuTextEditor();
		void initialisationWidgetTextEditor();
		void saveFile(const QString & fileName);
		void openFile(const QString & fileName);
		
		QAction* p_actionQuitter;
		QAction* p_actionOuvrir;
		QAction* p_actionEnregistrer;
		QAction* p_actionEnregistrerSous;
		
		QTextEdit* p_textEditor;
		QWidget* p_mainWidget;
		QString p_lastFileOpen;
};

Et enfin, les slots privés :

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
26
27
28
29
class TextEditor : public QMainWindow
{
	Q_OBJECT
	public:
		TextEditor();
		virtual ~TextEditor();
		
	private:
		void initialisationTextEditor();
		void initialisationActionTextEditor();
		void initialisationMenuTextEditor();
		void initialisationWidgetTextEditor();
		void saveFile(const QString & fileName);
		void openFile(const QString & fileName);
		
		QAction* p_actionQuitter;
		QAction* p_actionOuvrir;
		QAction* p_actionEnregistrer;
		QAction* p_actionEnregistrerSous;
		
		QTextEdit* p_textEditor;
		QWidget* p_mainWidget;
		QString p_lastFileOpen;
	
	private slots:
		void ouvrir();
		void enregistrer();
		void enregistrerSous();
};

Voilà à quoi ressemble le fichier une fois finit :

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#ifndef __TEXT_EDITOR_H__
#define __TEXT_EDITOR_H__

#include <stdio.h>
#include <stdlib.h>
#include <string>

#include <QtGui/QApplication>
#include <QtGui/QMainWindow>
#include <QtCore/QTextCodec>

#include <QtGui/QMenuBar>
#include <QtGui/QAction>

#include <QtGui/QTextEdit>
#include <QtGui/QVBoxLayout>



class TextEditor : public QMainWindow
{
	Q_OBJECT
	public:
		TextEditor();
		virtual ~TextEditor();
	
	private:
		void initialisationTextEditor();
		void initialisationActionTextEditor();
		void initialisationMenuTextEditor();
		void initialisationWidgetTextEditor();
		void saveFile(const QString & fileName);
		void openFile(const QString & fileName);
		
		QAction* p_actionQuitter;
		QAction* p_actionOuvrir;
		QAction* p_actionEnregistrer;
		QAction* p_actionEnregistrerSous;
		
		QTextEdit* p_textEditor;
		QWidget* p_mainWidget;
		QString p_lastFileOpen;
		
	private slots:
		void ouvrir();
		void enregistrer();
		void enregistrerSous();
		
};

#endif

Bien, passons au TextEditor.cpp.