Панель инструментов QToolBar в Qt
Оглавление
- Панель инструментов QToolBar в Qt
- Строка состояния QStatusBar в Qt
Основная цель панели инструментов (Tool Bar) — предоставить пользователю быстрый доступ к командам программы одним нажатием кнопки мыши. Это делает панель инструментов более удобной по сравнению с меню, в котором нужно сделать, по меньшей мере, два нажатия. Еще одно достоинство состоит в том, что панель инструментов всегда видима, и не нужно тратить время на поиски необходимой команды в меню или вспоминать комбинацию клавиш ускорителя.
Панель инструментов представляет собой область, в которой расположены кнопки, дублирующие часто используемые команды меню. Для панелей инструментов библиотека Qt предоставляет класс QToolBar, который определен в заголовочном файле QToolBar. Процесс создания панели инструментов несложен, и, со временем, вы сможете формировать панели, имеющие довольно сложную структуру и удовлетворяющую любым требованиям.
Для того чтобы поместить кнопку на панель инструментов, необходимо вызвать метод addAction(), который неявно создаст объект действия. В этот метод можно передать растровое изображение, поясняющий текст и соединение со слотом.
Старайтесь не игнорировать и всегда передавать поясняющий текст. Ввиду отсутствия текста на кнопках инструментов дополнительные небольшие текстовые пояснения играют важную информационную роль. Эти пояснения всплывают в тот момент, когда пользователь задержит указатель мыши в области кнопки на небольшой промежуток времени.
Наряду с кнопками, в панели инструментов могут быть размещены и любые другие виджеты. Для этого в классе QToolBar определен метод addWidget().
Программа, окно которой показано на рисунке, демонстрирует использование панелей инструментов. Панели инструментов могут перемещаться с одного места на другое. В нашем случае был использован класс QMainWindow.
Класс QMainWindow представляет собой класс главного окна приложения, который содержит в себе строку меню, несколько зон для размещения панелей инструментов и строку состояния.
#ifndef _MainWindow_h_
#define _MainWindow_h_
#include <QtGui>
#include "img1.xpm"
#include "img2.xpm"
#include "img3.xpm"
#include "img4.xpm"
class MainWindow : public QMainWindow {
Q_OBJECT
public:
MainWindow(QWidget* pwgt = 0) : QMainWindow(pwgt)
{
addToolBar(Qt::TopToolBarArea, createToolBar());
addToolBar(Qt::BottomToolBarArea, createToolBar());
addToolBar(Qt::LeftToolBarArea, createToolBar());
addToolBar(Qt::RightToolBarArea, createToolBar());
}
QToolBar* createToolBar()
{
QToolBar* ptb = new QToolBar("Linker ToolBar");
ptb->addAction(QPixmap(img1_xpm), "1", this, SLOT(slotNoImpl()));
ptb->addAction(QPixmap(img2_xpm), "2", this, SLOT(slotNoImpl()));
ptb->addSeparator();
ptb->addAction(QPixmap(img3_xpm), "3", this, SLOT(slotNoImpl()));
ptb->addAction(QPixmap(img4_xpm), "4", this, SLOT(slotNoImpl()));
return ptb;
}
public slots:
void slotNoImpl()
{
QMessageBox::information(0, "Message", "Not implemented");
}
};
#endif //_MainWindow_h_
Класс MainWindow унаследован от класса QMainWindow. С помощью метода addToolBar() в конструкторе класса к главному окну добавляются четыре панели инструментов, создаваемые методом createToolBar() класса MainWindow. Первый параметр метода addToolBar() задает расположение панели инструментов в главном окне приложения. В самом методе createToolBar() производится неявное создание четырех объектов действий метода addAction(), в который передаются:
- растровое изображение — массив растровых данных, хранящихся в файле формата ХРМ. Из этих данных создается объект класса QPixmap;
- поясняющая надпись (в нашем случае это номер);
- два последних параметра определяют соединение со слотом slotNoImpl(), который отображает диалоговое окно при нажатии.
Разделитель между кнопками вставляется с помощью метода addSeparator().
Читать далее: Строка состояния QStatusBar в Qt