19 bool saveAs();
20 void find();
21 void goToCell();
22 void sort();
23 void about();
Некоторые функции меню, как, например, File | New (Файл | Создать) или Help | About (Помощь | О программе), реализованы в
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
Кроме этих закрытых слотов и закрытых функций в подклассе
Теперь мы кратко рассмотрим реализацию этого подкласса:
01 #include
02 #include "finddialog.h"
03 #include "gotocelldialog.h"
04 #include "mainwindow.h"
05 #include "sortdialog.h"
06 #include "spreadsheet.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 }