Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«QT 4: ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ GUI Π½Π° Π‘++Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 14

Автор Жасмин Π‘Π»Π°Π½ΡˆΠ΅Ρ‚

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();