Строка состояния QStatusBar в Qt
Оглавление
- Панель инструментов QToolBar в Qt
- Строка состояния QStatusBar в Qt
Этот виджет располагается в нижней части главного окна и отображает, как правило, текстовые сообщения для предоставления информации о состоянии приложения или выдачи справки о командах меню или кнопках панелей инструментов. Строку состояния реализует класс QStatusBar, определенный в заголовочном файле QStatusBar. Различают следующие типы сообщений:
- промежуточный — вызывается методом showMessage(). Для очистки строки состояния следует вызвать метод clearMessage() . Если во втором параметре метода showMessage() задан временной интервал (в миллисекундах), то строка состояния будет очищаться автоматически по его истечении. Примером промежуточного отображения является вывод поясняющего текста для команд меню;
- нормальный — используется для отображения часто изменяющейся информации (например, для отображения позиции указателя мыши). Для отображения такой информации лучше всего поместить в строку состояния отдельный виджет. Например, в том случае, если приложение должно отображать прогресс работы какой-либо операции, то лучше разместить в строке состояния индикатор прогресса выполнения. Чтобы разместить виджет в строке состояния, нужно передать его указатель в метод addWidget(). Виджеты можно удалять из строки состояния с помощью метода removeWidget();
- постоянный — отображает информацию, необходимую для работы с приложением. Например, для отображения состояния клавиатуры в строке состояния могут быть внесены виджеты надписей, отображающие состояние клавиш <Caps Lock>, <Num Lock>, <lnsert> и т. д. Это достигается посредством вызова метода addPermanentWidget(), принимающего указатель на виджет в качестве аргумента.
На рисунке показан пример использования класса QStatusBar: окно, в котором в строку состояния помещено два виджета надписи для отображения актуальных координат указателя мыши.
#ifndef _MainWindow_h_
#define _MainWindow_h_
#include <QtGui>
class MainWindow : public QMainWindow {
Q_OBJECT
private:
QLabel* m_plblX;
QLabel* m_plblY;
protected:
virtual void mouseMoveEvent(QMouseEvent* pe)
{
m_plblX->setText("X=" + QString().setNum(pe->x()));
m_plblY->setText("Y=" + QString().setNum(pe->y()));
}
public:
MainWindow(QWidget* pwgt = 0) : QMainWindow(pwgt)
{
setMouseTracking(true);
m_plblX = new QLabel(this);
m_plblY = new QLabel(this);
statusBar()->addWidget(m_plblY);
statusBar()->addWidget(m_plblX);
}
};
#endif //_MainWindow_h_
Класс MainWindow наследуется от класса QMainWindow. Этот класс содержит атрибуты, хранящие указатели на виджеты надписи m_plblX и m_plblY. Сами виджеты надписей создаются в конструкторе и помещаются в строку состояния методом addWidget().
Для отображения актуальных координат указателя мыши текст виджетам надписи присваивается в методе обработки события mouseMoveEvent(). Значения координат указателя мыши возвращаются методами х() и у() объекта события (указатель ре).
Панель инструментов используется для предоставления быстрого доступа к часто используемым командам меню. Этот виджет представляет собой дочернее окно, в котором помещены кнопки, позволяющие осуществлять запуск команд одним нажатием левой кнопки мыши.
Виджет строки состояния располагается в нижней части главного окна программы и используется для отображения информационных сообщений трех типов: промежуточного, нормального и постоянного.
Читать далее: Класс главного окна QMainWindow