Подобным же образом мы создаем меню Tools, Options и Help (инструменты, опции и помощь). Мы вставляем разделитель между меню Options и Help. В системах Motif и CDE этот разделитель сдвигает меню Help вправо; в других случаях этот разделитель игнорируется.

Рис. 3.5. Полоса главного меню в стилях систем Motif и Windows.

01 void MainWindow::createContextMenu()

02 {

03 spreadsheet->addAction(copyAction);

04 spreadsheet->addAction(pasteAction);

05 spreadsheet->addAction(cutAction);

06 spreadsheet->setContextMenuPolicy(Qt::ActionsContextMenu);

07 }

Любой виджет в Qt может иметь связанный с ним список действий QAction. Для обеспечения в приложении контекстного меню мы добавляем необходимые нам действия в виджет Spreadsheet и устанавливаем политику контекстного меню виджета на отображение контекстного меню с этими действиями. Контекстные меню вызываются при щелчке правой клавишей мышки по виджету или при нажатии специальной клавиши клавиатуры, зависящей от платформы.

Рис. 3.6. Контекстное меню приложения Электронная таблица.

Более сложный способ обеспечения контекстного меню заключается в переопределении функции QWidget::contextMenuEvent(), создании виджета QMenu, заполнении его требуемыми действиями и вызове для него функции exec().

01 void Mainwindow::createToolBars()

02 {

03 fileToolBar = addToolBar(tr("&File"));

04 fileToolBar->addAction(newAction);

05 fileToolBar->addAction(openAction);

06 fileToolBar->addAction(saveAction);

07 editToolBar = addToolBar(tr("&Edif));

08 editToolBar->addAction(cutAction);

09 editToolBar->addAction(copyAction);

10 editToolBar->addAction(pasteAction);

11 editToolBar->addSeparator();

12 editToolBar->addAction(findAction);

13 editToolBar->addAction(goToCellAction);

14 }

Создание панелей инструментов очень похоже на создание меню. Мы создаем панель инструментов File и панель инструментов Edit. Как и меню, панель инструментов может иметь разделители.

Рис. 3.7. Панели инструментов приложения Электронная таблица.

<p>Создание и настройка строки состояния</p>

После создания меню и панелей инструментов мы готовы приступить к созданию строки состояния приложения Электронная таблица.

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

Для создания строки состояния в конструкторе MainWindow вызывается функция createStatusBar():

01 void MainWindow::createStatusBar()

02 {

03 locationLabel = new QLabel(" W999 ");

04 locationLabel->setAlignment(Qt::AlignHCenter);

05 locationLabel->setMinimumSize(locationLabel->sizeHint());

06 formulaLabel = new QLabel;

07 formulaLabel->setIndent(3);

08 statusBar()->addWidget(locationLabel);

09 statusBar()->addWidget(formulaLabel, 1);

10 connect(spreadsheet, SIGNAL(currentCellChanged(int, int, int, int)),

11 this, SLOT(updateStatusBar()));

12 connect(spreadsheet, SIGNAL(modified()),

13 this, SLOT(spreadsheetModified()));

14 updateStatusBar();

15 }

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

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