class MainWindow : public QMainWindow {

Q_0BJECT

public:

MainWindow();

protected:

void closeEvent(QCloseEvent *event);

Мы определяем класс MainWindow как подкласс QMainWindow. Он содержит макрос QJDBJECT, поскольку имеет собственные сигналы и слоты.

Функция close Event () определена в QWidget как виртуальная функция; она ав­томатически вызывается при закрытии окна пользователем. Она переопределяется в MainWindow для того, чтобы можно было задать пользователю стандартный вопрос относительно возможности сохранения изменений («Do you want to save your chang­es?*) и чтобы сохранить на диске пользовательские настройки.

private slots: void newFile(); void open(); bool save(); bool saveAsO; void find(); void goToCell(); void sort(); void about();

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

void openRecentFile(); void updateStatusBar(); void spreadsheetModified();

private:

void createActionsO;

void createMenus();

void createContextMenuO;

void createToolBarsO;

void createStatusBar();

void readSettingsO;

void writeSettingsO;

bool okToContinue();

bool loadFile(const QString &fileName);

bool saveFile(const QString &fileName);

void setCurrentFile(const QString &fileName);

void updateRecentFileActionsO;

QString strippedName(const QString &fullFileName);

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

Spreadsheet *spreadsheet; FindDialog *findDialog; QLabel *locationLabel; QLabel *formulaLabel; QStringList recentFiles; QString curFile;

enum { MaxRecentFiles = 5 };

QAction *recentFileActions[MaxRecentFiles];

QAction *separatorAction;

QMenu *fileMenu; QMenu *editMenu;

QToolBar *fileToolBar; QToolBar *editToolBar; QAction *newAction; QAction *openAction;

QAction *aboutQtAction;

};

#endif

Кроме этих закрытых слотов и закрытых функций в подклассе MainWindow имеет­ся также много закрытых переменных


<< назад вперед >>