QT 4: программирование GUI на С++ | страница 47



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

>15 }

Функция QMainWindow::statusBar() возвращает указатель на строку состояния. (Строка состояния создается при первом вызове функции statusBar.) В качестве индикаторов состояния просто используются текстовые метки QLabel, текст которых изменяется по мере необходимости. Мы добавили отступ для formulaLabel, чтобы указанный здесь текст отображался с небольшим смещением от левого края. При добавлении текстовых меток QLabel в строку состояния они автоматически становятся дочерними по отношению к строке состояния.

Рис. 3.8 показывает, что эти две текстовые метки занимают различное пространство. Индикатор ячейки занимает очень немного места, и при изменении размеров окна дополнительное пространство будет использовано для правого индикатора, где отображается формула ячейки. Это достигается путем установки фактора растяжения на 1 при вызове функции QStatusBar::addWidget() для формулы ячейки при создании двух других индикаторов. Для индикатора позиции фактор растяжения по умолчанию равен 0, и поэтому он не будет растягиваться.