14 restoreState(settings.value("state").toByteArray);
15 settings.endGroup;
16 }
Наконец,
Многодокументный интерфейс
Приложения, которые обеспечивают работу со многими документами в центральной области главного окна, называются приложениями с многодокументным интерфейсом или MDI—приложениями. В Qt MDI—приложения создаются с использованием в качестве центрального виджета класса
Обычно MDI—приложения содержат пункт главного меню Windows (окна) с командами по управлению окнами и их списком. Активное окно отмечается галочкой. Пользователь может сделать любое окно активным, щелкая по его названию в меню Windows.
В данном разделе для демонстрации способов создания приложения с интерфейсом MDI и способов реализации его меню Windows мы разработаем MDI—приложение Editor (редактор), показанное на рис. 6.16.
Это приложение состоит из двух классов:
Давайте начнем с класса
01 MainWindow::MainWindow
02 {
03 workspace = new QWorkspace;
04 setCentralWidget(workspace);
05 connect(workspace, SIGNAL(windowActivated(QWidget *)),
06 this, SLOT(updateMenus));
07 createActions;
08 createMenus;
09 createToolBars;
10 createStatusBar;
11 setWindowTitle(tr("MDI Editor"));
12 setWindowIcon(QPixmap(":/images/icon.png"));
13 }
В конструкторе
01 void MainWindow::newFile
02 {
03 Editor *editor = createEditor;
04 editor->newFile;
05 editor->show;
06 }
Слот
01 Editor *MainWindow::createEditor
02 {
03 Editor *editor = new Editor;
04 connect(editor, SIGNAL(copyAvailable(bool)),
05 cutAction, SLOT(setEnabled(bool)));
06 connect(editor, SIGNAL(copyAvailable(bool)),
07 copyAction, SLOT(setEnabled(bool)));
08 workspace->addWindow(editor);
09 windowMenu->addAction(editor->windowMenuAction);
10 windowActionGroup->addAction(editor->windowMenuAction);
11 return editor;
12 }
Функция
Поскольку мы используем интерфейс MDI, может оказаться, что работа будет вестись одновременно с несколькими виджетами