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, и поэтому он не будет растягиваться.