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.
|