15 }
ΠΡ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅ΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠΌΠΈ ΠΌΠ°ΡΡΠΈΠ² recentFileActions. ΠΠ°ΠΆΠ΄ΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΡΠΊΡΡΡΠΎ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΊ ΡΠ»ΠΎΡΡ openRecentFile(). ΠΠ°Π»Π΅Π΅ ΠΌΡ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π² ΡΠΏΠΈΡΠΊΠ΅ Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠ΄Π΅Π»Π°ΡΡ Π²ΠΈΠ΄ΠΈΠΌΡΠΌΠΈ, ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΈΠΌΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ.
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Select All (Π²ΡΠ΄Π΅Π»ΠΈΡΡ Π²ΡΠ΅):
16 selectAllAction = new QAction(tr("&All"), this);
17 selectAllAction->setShortcut(tr("Ctrl+A"));
18 selectAllAction->setStatusTip(tr("Select all the cells in the spreadsheet"));
19 connect(selectAllAction, SIGNAL(triggered()),
20 spreadsheet, SLOT(selectAll()));
Π‘Π»ΠΎΡ selectAll() ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΡΡΡ Π² QAbstractItemView, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π±Π°Π·ΠΎΠ²ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² QTableWidget, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π°ΠΌ ΡΠ°ΠΌΠΈΠΌ Π½Π΅ Π½Π°Π΄ΠΎ Π΅Π³ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Show Grid (ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΡΠ΅ΡΠΊΡ) ΠΈΠ· ΠΌΠ΅Π½Ρ Options (ΠΎΠΏΡΠΈΠΈ):
21 showGridAction = new QAction(tr("&Show Grid"), this);
22 showGridAction->setCheckable(true);
23 showGridAction->setChecked(spreadsheet->showGrid());
24 showGridAction->setStatusTip(tr("Show or hide the spreadsheet's grid"));
25 connect(showGridAction, SIGNAL(toggled(bool)),
26 spreadsheet, SLOT(setShowGrid(bool)));
ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅ Show Grid ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΠΌ. ΠΠ½ΠΎ ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ°ΡΠΊΠ΅Ρ ΡΠ»Π°ΠΆΠΊΠ° Π² ΠΌΠ΅Π½Ρ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΊΠ½ΠΎΠΏΠΊΠ°βΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»Ρ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ². ΠΠΎΠ³Π΄Π° ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ, Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ Spreadsheet ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ ΡΠ΅ΡΠΊΠ°. ΠΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ Spreadsheet, ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ°Π±ΠΎΡΠ° ΡΡΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»Ρ Π±ΡΠ΄Π΅Ρ Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½Π°ΡΠ°Π»Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π°. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΠ΅ΠΌ ΡΠΈΠ³Π½Π°Π» toggled(bool) Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Show Grid ΡΠΎ ΡΠ»ΠΎΡΠΎΠΌ setShowGrid(bool) ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Spreadsheet, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΡΡΡ ΠΎΡ QTableWidget. ΠΠΎΡΠ»Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΊ ΠΌΠ΅Π½Ρ ΠΈΠ»ΠΈ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΌΠΎΠΆΠ΅Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΈ Π²ΡΠΊΠ»ΡΡΠ°ΡΡ ΡΠ΅ΡΠΊΡ.
ΠΠ΅ΠΉΡΡΠ²ΠΈΡβΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»ΠΈ Show Grid ΠΈ AutoβRecalculate (Π°Π²ΡΠΎΠΏΠ΅ΡΠ΅ΡΡΠ΅Ρ) ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Qt ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠΈΡΠΊΠ»ΡΡΠ°ΡΡΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΏΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° QActionGroup.
27 aboutQtAction = new QAction(tr("About &Qt"), this);
28 aboutQtAction->setStatusTip(tr("Show the Qt library's About box"));
29 connect(aboutQtAction, SIGNAL(triggered()),
30 qApp, SLOT(aboutQt()));
31 }
ΠΠ»Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ About Qt (ΡΠΏΡΠ°Π²ΠΊΠ° ΠΏΠΎ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Qt) ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠ»ΠΎΡ aboutQt() ΠΎΠ±ΡΠ΅ΠΊΡΠ° QApplication, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΠ΅ΡΠ΅Π· Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ qApp.
Π ΠΈΡ. 3.4. ΠΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ About Qt.
ΠΠ΅ΠΉΡΡΠ²ΠΈΡ Π½Π°ΠΌΠΈ ΡΠΎΠ·Π΄Π°Π½Ρ, ΠΈ ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΌΠ΅Π½Ρ Ρ ΡΡΠΈΠΌΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠΌΠΈ.
01 void MainWindow::createMenus()
02 {
03 fileMenu = menuBar()->addMenu(tr("&File"));
04 fileMenu->addAction(newAction);
05 fileMenu->addAction(openAction);
06 fileMenu->addAction(saveAction);
07 fileMenu->addAction(saveAsAction);
08 separatorAction = fileMenu->addSeparator();
09 for (int i = 0; i < MaxRecentFiles; ++i)
10 fileMenu->addAction(recentFileActions[i]);
11 fileMenu->addSeparator();
12 fileMenu->addAction(exitAction);
Π Qt Π²ΡΠ΅ ΠΌΠ΅Π½Ρ ΡΠ²Π»ΡΡΡΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°ΠΌΠΈ ΠΊΠ»Π°ΡΡΠ° QMenu. Π€ΡΠ½ΠΊΡΠΈΡ addMenu() ΡΠΎΠ·Π΄Π°Π΅Ρ Π²ΠΈΠ΄ΠΆΠ΅Ρ QMenu Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌ ΡΠ΅ΠΊΡΡΠΎΠΌ ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π΅Π³ΠΎ Π² ΡΡΡΠΎΠΊΡ ΠΌΠ΅Π½Ρ. Π€ΡΠ½ΠΊΡΠΈΡ QMainWindow::menuBar() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° QMenuBar. Π‘ΡΡΠΎΠΊΠ° ΠΌΠ΅Π½Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅ menuBar().
Π‘Π½Π°ΡΠ°Π»Π° ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΌΠ΅Π½Ρ File (ΡΠ°ΠΉΠ») ΠΈ Π·Π°ΡΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΊ Π½Π΅ΠΌΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ New, Open, Save ΠΈ Save As (ΡΠΎΠ·Π΄Π°ΡΡ, ΠΎΡΠΊΡΡΡΡ, ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΊΠ°ΠΊ). ΠΡ Π²ΡΡΠ°Π²Π»ΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ Π΄Π»Ρ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ Π³ΡΡΠΏΠΏΡ Π²Π·Π°ΠΈΠΌΠΎΡΠ²ΡΠ·Π°Π½Π½ΡΡ ΠΏΡΠ½ΠΊΡΠΎΠ² ΠΌΠ΅Π½Ρ. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠΈΠΊΠ» for Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ (ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎ ΡΠΊΡΡΡΡΡ ) Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π° recentFileActions, Π° Π² ΠΊΠΎΠ½ΡΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ exitAction.
ΠΡ ΡΠΎΡ ΡΠ°Π½ΠΈΠ»ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Π΅ΠΉ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ ΡΠΊΡΡΠ²Π°ΡΡ ΡΡΠΎΡ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ (Π΅ΡΠ»ΠΈ ΡΠ°ΠΉΠ»Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ) ΠΈΠ»ΠΈ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ Π΅Π³ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ Π½Π΅ Ρ ΠΎΡΠΈΠΌ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ Π΄Π²Π° ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ, ΠΊΠΎΠ³Π΄Π° ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅Ρ.
13 editMenu = menuBar()->addMenu(tr("&Edit"));
14 editMenu->addAction(cutAction);
15 editMenu->addAction(copyAction);
16 editMenu->addAction(pasteAction);
17 editMenu->addAction(deleteAction);
18 selectSubMenu = editMenu->addMenu(tr("&Select"));
19 selectSubMenu->addAction(selectRowAction);
20 selectSubMenu->addAction(selectColumnAction);
21 selectSubMenu->addAction(selectAllAction);
22 editMenu->addSeparator();
23 editMenu->addAction(findAction);
24 editMenu->addAction(goToCellAction);
Π ΠΌΠ΅Π½Ρ Edit (ΠΏΡΠ°Π²ΠΊΠ°) Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρ. ΠΡΠΎ ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρ (ΠΊΠ°ΠΊ ΠΈ ΠΌΠ΅Π½Ρ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΎΠ½ΠΎ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ) ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠΌ ΠΊΠ»Π°ΡΡΠ° QPopupMenu. ΠΡ ΠΏΡΠΎΡΡΠΎ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρ ΠΏΡΡΠ΅ΠΌ ΡΠΊΠ°Π·Π°Π½ΠΈΡ this Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΅Π³ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ ΠΈ Π²ΡΡΠ°Π²Π»ΡΠ΅ΠΌ Π΅Π³ΠΎ Π² ΡΠΎ ΠΌΠ΅ΡΡΠΎ ΠΌΠ΅Π½Ρ Edit, Π³Π΄Π΅ ΠΌΡ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ Π΅Π³ΠΎ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ.
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΌΠ΅Π½Ρ Edit (ΠΏΡΠ°Π²ΠΊΠ°), Π΄ΠΎΠ±Π°Π²Π»ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ QMenu::addAction(), ΠΊΠ°ΠΊ ΠΌΡ ΡΡΠΎ Π΄Π΅Π»Π°Π»ΠΈ Π΄Π»Ρ ΠΌΠ΅Π½Ρ File, ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡ ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρ Π² Π½ΡΠΆΠ½ΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ QMenu::addMenu(). ΠΠΎΠ΄ΠΌΠ΅Π½Ρ, ΠΊΠ°ΠΊ ΠΈ ΠΌΠ΅Π½Ρ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΎΠ½ΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ, ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΏ QMenu.
25 toolsMenu = menuBar()->addMenu(tr("&Tools"));
26 toolsMenu->addAction(recalculateAction);
27 toolsMenu->addAction(sortAction);
28 optionsMenu = menuBar()->addMenu(tr("&Options"));
29 optionsMenu->addAction(showGridAction);
30 optionsMenu->addAction(autoRecalcAction);
31 menuBar()->addSeparator();
32 helpMenu = menuBar()->addMenu(tr("&Help"));
33 helpMenu->addAction(aboutAction);
34 helpMenu->addAction(aboutQtAction);
35 }
ΠΠΎΠ΄ΠΎΠ±Π½ΡΠΌ ΠΆΠ΅ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΌΠ΅Π½Ρ 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. ΠΠ°Π½Π΅Π»ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΠ»Π΅ΠΊΡΡΠΎΠ½Π½Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ°.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΡΡΠΎΠΊΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ
ΠΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠ΅Π½Ρ ΠΈ ΠΏΠ°Π½Π΅Π»Π΅ΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΌΡ Π³ΠΎΡΠΎΠ²Ρ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΡΠΎΠΊΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΠ»Π΅ΠΊΡΡΠΎΠ½Π½Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ°.
ΠΠ±ΡΡΠ½ΠΎ ΡΡΡΠΎΠΊΠ° ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄Π²Π° ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡΠ°: ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΡΠ΅ΠΉΠΊΠΈ ΠΈ ΡΠΎΡΠΌΡΠ»Ρ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΡΠ΅ΠΉΠΊΠΈ. ΠΠΎΠ»ΠΎΡΠ° ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΎΠΊ ΠΈ Π΄ΡΡΠ³ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ.
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΡΠΎΠΊΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ 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();