Большинство пунктов меню имеет смысл при существовании активного окна, поэтому мы их отключаем при отсутствии активного окна. В конце мы вызываем
01 void MainWindow::createMenus()
02 {
03 windowMenu = menuBar()->addMenu(tr("&Window"));
04 windowMenu->addAction(closeAction);
05 windowMenu->addAction(closeAllAction);
06 windowMenu->addSeparator();
07 windowMenu->addAction(tileAction);
08 windowMenu->addAction(cascadeAction);
09 windowMenu->addSeparator();
10 windowMenu->addAction(nextAction);
11 windowMenu->addAction(previousAction);
12 windowMenu->addAction(separatorAction);
13 }
Закрытая функция
01 void MainWindow::closeEvent(QCloseEvent *event)
02 {
03 workspace->closeAllWindows();
04 if (activeEditor()) {
05 event->ignore();
06 } else {
07 event->accept();
08 }
09 }
Функция
Теперь мы закончили наш обзор
Ниже приводится определение класса:
01 class Editor : public QTextEdit
02 {
03 Q_OBJECT
04 public:
05 Editor(QWidget *parent = 0);
06 bool openFile(const QString &fileName);
07 bool save();
08 bool saveAs();
09 void newFile();
10 bool open();
11 protected:
12 QSize sizeHint() const;
13 QAction *windowMenuAction() const { return action; }
14 void closeEvent(QCloseEvent *event);
15 private slots:
16 void documentWasModified();
17 private:
18 bool okToContinue();
19 bool saveFile(const QString &fileName);
20 void setCurrentFile(const QString &fileName);
21 bool readFile(const QString &fileName);
22 bool writeFile(const QString &fileName);
23 QString strippedName(const QString &fullFileName);
24 QString curFile;