В статической функции 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, и поэтому мы не станем здесь повторять эти сведения.