QT 4: программирование GUI на С++ | страница 41



>24 void openRecentFile();

>25 void updateStatusBar();

>26 void spreadsheetModified();

>27 private:

>28 void createActions();

>29 void createMenus();

>30 void createContextMenu();

>31 void createToolBars();

>32 void createStatusBar();

>33 void readSettings();

>34 void writeSettings();

>35 bool okToContinue();

>36 bool loadFile(const QString &fileName);

>37 bool saveFile(const QString &fileName);

>38 void setCurrentFile(const QString &fileName);

>39 void updateRecentFileActions();

>40 QString strippedName(const QString &fullFileName);

Для поддержки пользовательского интерфейса главному окну потребуется еще несколько закрытых слотов и закрытых функций.

>41 Spreadsheet *spreadsheet;

>42 FindDialog *findDialog;

>43 QLabel *locationLabel;

>44 QLabel *formulaLabel;

>45 QStringList recentFiles;

>46 QString curFile;


>47 enum { MaxRecentFiles = 5 };

>48 QAction *recentFileActions[MaxRecentFiles];

>49 QAction *separatorAction;


>50 QMenu *fileMenu;

>51 QMenu *editMenu;

> …

>52 QToolBar *fileToolBar;

>53 QToolBar *editToolBar;

>54 QAction *newAction;

>55 QAction *openAction;

> …

>56 QAction *aboutQtAction;

>57 };

>58 #endif

Кроме этих закрытых слотов и закрытых функций в подклассе MainWindow имеется также много закрытых переменных. По мере их использования мы будем объяснять их назначение.

Теперь мы кратко рассмотрим реализацию этого подкласса:

>01 #include

>02 #include "finddialog.h"

>03 #include "gotocelldialog.h"

>04 #include "mainwindow.h"

>05 #include "sortdialog.h"

>06 #include "spreadsheet.h"

Мы включаем заголовочный файл , который содержит определения всех классов Qt, используемых нашим подклассом. Мы также включаем некоторые пользовательские заголовочные файлы из главы 2, а именно finddialog.h, gotocelldialog.h и sortdialog.h.

>07 MainWindow::MainWindow()

>08 {

>09 spreadsheet = new Spreadsheet;

>10 setCentralWidget(spreadsheet);


>11 createActions();

>12 createMenus();

>13 createContextMenu();

>14 createToolBars();

>15 createStatusBar();


>16 readSettings();

>17 findDialog = 0;

>18 setWindowIcon(QIcon(":/images/icon.png"));

>19 setCurrentFile("");

>20 }

В конструкторе мы начинаем создание виджета Электронная таблица Spreadsheet и определяем его в качестве центрального виджета главного окна. Центральный виджет занимает среднюю часть главного окна (см. рис. 3.2). Класс