Читаем QT 4: программирование GUI на С++ полностью

В статической функции showPage мы создаем окно HelpBrowser и затем выдаем его на экран. Это окно будет удалено автоматически, когда пользователь закроет его, поскольку мы установили в конструкторе HelpBrowser атрибут Qt::WA_DeleteOnClose.

В этом примере мы предполагаем, что документация располагается в подкаталоге doc того каталога, где находится исполняемый модуль приложения. Все страницы, передаваемые функции showPage, будут браться из этого подкаталога.

Теперь мы можем вызывать браузер системы помощи из приложения. В главном окне приложения мы могли бы создать команду Help и подсоединить ее к слоту help, который может иметь следующий вид:

01 void MainWindow::help

02 {

03 HelpBrowser::showPage("index.html");

04 }

Здесь предполагается, что главный файл системы помощи имеет имя index.html. Для диалоговых окон мы могли бы подсоединить кнопку Help к слоту help, который может иметь следующий вид:

01 void EntryDialog::help

02 {

03 HelpBrowser::showPage("forms.html#editing");

04 }

Здесь мы выводим на экран другой справочный файл, forms.html, и позиционируем браузер QTextBrowser нa метку editing.

Использование Qt Assistant для мощной интерактивной системы помощи

Qt Assistant является свободно распространяемой интерактивной системой помощи, поддерживаемой фирмой «Trolltech». Основным ее достоинством является поддержка индексации и поиск по всему тексту, а также возможность ее работы с наборами документации нескольких приложений.

Для применения Qt Assistant мы должны включить в наше приложение соответствующий программный код и указать Qt Assistant место расположения нашей документации.

Связь между приложением Qt и QtAssistant обеспечивается классом QAssistantClient, который располагается в отдельной библиотеке. Для сборки этой библиотеки с нашим приложением мы должны добавить следующую строку к файлу приложения .pro:

CONFIG += assistant

Теперь мы рассмотрим программный код нового класса HelpBrowser, который использует Qt Assistant.

01 #ifndef HELPBROWSER_H

02 #define HELPBROWSER_H

03 class QAssistantClient;

04 class QString;

05 class HelpBrowser

06 {

07 public:

08 static void showPage(const QString &page);

09 private:

10 static QAssistantClient *assistant;

11 };

12 #endif

Ниже приводится новый файл helpbrowser.cpp:

01 #include

02 #include

03 #include "helpbrowser.h"

04 QAssistantClient *HelpBrowser::assistant = 0;

05 void HelpBrowser::showPage(const QString &page)

06 {

07 QString path = QApplication::applicationDirPath + "/doc/" + page;

08 if (!assistant)

09 assistant = new QAssistantClient("");

10 assistant->showPage(path);

11 }

Конструктор QAssistantClient принимает в качестве своего первого аргумента строку пути, который используется для определения места нахождения исполняемого модуля Qt Assistant. Передавая пустой путь, мы указываем на необходимость QAssistantClient поиска исполняемого модуля в путях переменной среды PATH. QAssistantClient имеет функцию showPage, которая принимает имя файла страницы HTML с необязательным указанием метки позиции.

На следующем этапе необходимо подготовить оглавление и предметный указатель документации. Это выполняется путем создания профиля Qt Assistant и файла .dcf, который содержит сведения о документации. Все это объясняется в документации по Qt Assistant, и поэтому мы не станем здесь повторять эти сведения.

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже