Строка состояния QStatusBar в Qt


Оглавление

Этот виджет располагается в нижней части главного окна и отображает, как правило, текстовые сообщения для предоставления информации о состоянии приложения или выдачи справки о командах меню или кнопках панелей инструментов. Строку состояния реализует класс QStatusBar, определенный в заголовочном файле QStatusBar. Различают следующие типы сообщений:

  • промежуточный — вызывается методом showMessage(). Для очистки строки состояния следует вызвать метод clearMessage() . Если во втором параметре метода showMessage() задан временной интервал (в миллисекундах), то строка состояния будет очищаться автоматически по его истечении. Примером промежуточного отображения является вывод поясняющего текста для команд меню;
  • нормальный — используется для отображения часто изменяющейся информации (например, для отображения позиции указателя мыши). Для отображения такой информации лучше всего поместить в строку состояния отдельный виджет. Например, в том случае, если приложение должно отображать прогресс работы какой-либо операции, то лучше разместить в строке состояния индикатор прогресса выполнения. Чтобы разместить виджет в строке состояния, нужно передать его указатель в метод addWidget(). Виджеты можно удалять из строки состояния с помощью метода removeWidget();
  • постоянный — отображает информацию, необходимую для работы с приложением. Например, для отображения состояния клавиатуры в строке состояния могут быть внесены виджеты надписей, отображающие состояние клавиш <Caps Lock>, <Num Lock>, <lnsert> и т. д. Это достигается посредством вызова метода addPermanentWidget(), принимающего указатель на виджет в качестве аргумента.

Пример использования QStatusBar

На рисунке показан пример использования класса 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