Система помощи (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