19 bool saveAs();

20 void find();

21 void goToCell();

22 void sort();

23 void about();

Некоторые функции меню, как, например, File | New (Файл | Создать) или Help | About (Помощь | О программе), реализованы в MainWindow в виде закрытых слотов. Большинство слотов возвращают значение типа void, однако save() и saveAs() возвращают значение типа bool. Возвращаемое значение игнорируется при выполнении слота в ответ на сигнал, но при вызове слота в качестве функции мы может воспользоваться возвращаемым значением, как это мы можем делать при вызове любой обычной функции С++.

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 }

Перейти на страницу:

Похожие книги