Система помощи (Online Help)
Оглавление
- Предоставление помощи
- Система помощи (Online Help)
Большие приложения нуждаются в объемной системе помощи, подробно описывающей все функциональные возможности программы.
{рисунок}
Самый простой вариант — это предоставление пользователю специального навигатора, который будет открываться при нажатии соответствующего пункта меню Help (Помощь) или при нажатии на клавишу <F1>. Текст помощи может находиться в формате HTML, в котором, помимо текстовой, предоставляется возможность использовать и графическую информацию, ссылки на другие документы, а также воспользоваться форматированием шрифтов. Большой плюс состоит в том, что для создания файлов в формате HTML существует огромное количество редакторов. При острой необходимости и наличии необходимых навыков можно написать или подправить такой файл "от руки" в простом текстовом редакторе.
Класс QTextBrowser располагает всем необходимым для реализации навигатора, который способен показывать текст в формате HTML. Пример, показанный на рисунке, демонстрирует применение этого класса.
#include <QtGui>
#include "HelpBrowser.h"
int main (int argc, char** argv)
{
QApplication app(argc, argv);
HelpBrowser helpBrowser("doc", "index.htm");
helpBrowser.resize(400, 300);
helpBrowser.show();
return app.exec();
}
В основной программе создается виджет навигатора помощи — helpBrowser. В первом параметре конструктора передается путь, а во втором — имя файла.
#ifndef _HelpBrowser_h_
#define _HelpBrowser_h_
#include <QtGui>
class HelpBrowser : public QWidget {
Q_OBJECT
public:
HelpBrowser(const QString& strPath,
const QString& strFileName,
QWidget* pwgt = 0
) : QWidget(pwgt)
{
QPushButton* pcmdBack = new QPushButton("<<");
QPushButton* pcmdHome = new QPushButton("Home");
QPushButton* pcmdForward = new QPushButton(">>");
QTextBrowser* ptxtBrowser = new QTextBrowser;
connect(pcmdBack, SIGNAL(clicked()),
ptxtBrowser, SLOT(backward())
);
connect(pcmdHome, SIGNAL(clicked()),
ptxtBrowser, SLOT(home())
);
connect(pcmdForward, SIGNAL(clicked()),
ptxtBrowser, SLOT(forward())
);
connect(ptxtBrowser, SIGNAL(backwardAvailable(bool)),
pcmdBack, SLOT(setEnabled(bool))
);
connect(ptxtBrowser, SIGNAL(forwardAvailable(bool)),
pcmdForward, SLOT(setEnabled(bool))
);
ptxtBrowser->setSearchPaths(QStringList() << strPath);
ptxtBrowser->setSource(QString(strFileName));
//Layout setup
QVBoxLayout* pvbxLayout = new QVBoxLayout;
QHBoxLayout* phbxLayout = new QHBoxLayout;
phbxLayout->addWidget(pcmdBack);
phbxLayout->addWidget(pcmdHome);
phbxLayout->addWidget(pcmdForward);
pvbxLayout->addLayout(phbxLayout);
pvbxLayout->addWidget(ptxtBrowser);
setLayout(pvbxLayout);
}
};
#endif //_HelpBrowser_h_
В конструкторе класса HelpBrowser создаются виджеты кнопок для дополнительной навигации: указатели pcmdBack, pcmdHome и pcmdForward. После этого, с помощью метода connect о сигналы clicked() кнопок подсоединяются к соответствующим слотам виджета класса QTextBrowser: backward(), home() и forward(). Это необходимо для перемещения по документам помощи. Последние два метода connect() соединяют Сигналы backwardAvailable(bool) и forwardAvailable(bool) виджета класса QTextBrowser со слотами setEnabled(bool) кнопок нажатия (указатели pcmdBack и pcmdForward). Это позволяет делать кнопки, в зависимости от ситуации, активными или неактивными. Метод setSearchPath() устанавливает все пути для поиска документов, в нашем случае он только один. Метод setSource() считывает переданный документ. Далее все виджеты размещаются при помощи вертикального (pvbxLayout) и горизонтального (phbxLayout) лейаутов.
Использование помощи — верный шаг для повышения интуитивности работы пользователя с приложением. Помощь необходима для снабжения пользователя интересующей его информацией и подразделяется на три категории: воздушная подсказка, подсказка "Что это" и система помощи (Online Help).
Воздушная подсказка представляет собой небольшую по объему, часто ограниченную одной строкой, информацию. Она появляется в специально отведенной области при задерживании указателя мыши на виджете.
Подсказка "Что это" очень похожа на воздушную подсказку, но она предоставляет большую по объему информацию и может быть отображена только после запуска специального режима.
Система помощи снабжает пользователя исчерпывающей информацией о функциях приложения. Чтобы воспользоваться ею, совсем не обязательно запускать само приложение, так как информация находится в формате HTML и ее можно прочитать при помощи любого доступного в системе браузера.
Для реализации своего собственного навигатора можно воспользоваться классом QTextBrowser.
Читать далее: Панель инструментов QToolBar в Qt