Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«QT 4: ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ GUI Π½Π° Π‘++Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 89

Автор Жасмин Π‘Π»Π°Π½ΡˆΠ΅Ρ‚

ИспользованиС QTextBrowser Π² качСствС простого Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° систСмы ΠΏΠΎΠΌΠΎΡ‰ΠΈ

Для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π±ΠΎΠ»Π΅Π΅ слоТная систСма ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ‚ΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ подсказки, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π² строкС состояния ΠΈ справки Β«Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅?Β». ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ состоит Π² ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° систСмы ΠΏΠΎΠΌΠΎΡ‰ΠΈ. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ систСмы ΠΏΠΎΠΌΠΎΡ‰ΠΈ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΠΎΠ΄ΠΏΡƒΠ½ΠΊΡ‚ мСню Help Π² мСню Help Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΠΈ ΠΊΠ½ΠΎΠΏΠΊΡƒ Help Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅.

Π’ Π΄Π°Π½Π½ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ прСдставим простой Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ систСмы ΠΏΠΎΠΌΠΎΡ‰ΠΈ, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π½Π° рис. 16.3, ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. Окно прилоТСния примСняСт QTextBrowser для Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° экран страниц справки, прСдставлСнных Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ HTML. QTextBrowser ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚Π΅Π³ΠΎΠ² HTML, ΠΈ поэтому ΠΎΠ½ идСально ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для этих Ρ†Π΅Π»Π΅ΠΉ.

ΠœΡ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ с Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°:

01 #include <QWidget>

02 class QPushButton;

03 class QTextBrowser;

04 class HelpBrowser : public QWidget

05 {

06 Q_OBJECT

07 public:

08 HelpBrowser(const QString &path,

09 const QString &page, QWidget *parent = 0);

10 static void showPage(const QString &page);

11 private slots:

12 void updateWindowTitle();

13 private:

14 QTextBrowser *textBrowser;

15 QPushButton *homeButton;

16 QPushButton *backButton;

17 QPushButton *closeButton;

18 };

Класс HelpBrowser содСрТит ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π² любом мСстС Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. Данная функция создаСт ΠΎΠΊΠ½ΠΎ HelpBrowser ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π½Π° экран Π·Π°Π΄Π°Π½Π½ΡƒΡŽ страницу.

Рис. 16.3. Π’ΠΈΠ΄ΠΆΠ΅Ρ‚ HelpBrowser.

НиТС приводится Π½Π°Ρ‡Π°Π»ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ:

01 #include <QtGui>

02 #include "helpbrowser.h"

03 HelpBrowser::HelpBrowser(const QString &path,

04 const QString &page, QWidget *parent)

05 : QWidget(parent)

06 {

07 setAttribute(Qt::WA_DeleteOnClose);

08 setAttribute(Qt::WA_GroupLeader);

09 textBrowser = new QTextBrowser;

10 homeButton = new QPushButton(tr("&Home"));

11 backButton = new QPushButton(tr("&Back"));

12 closeButton = new QPushButton(tr("Close"));

13 closeButton->setShortcut(tr("Esc"));

14 QHBoxLayout *buttonLayout = new QHBoxLayout;

15 buttonLayout->addWidget(homeButton);

16 buttonLayout->addWidget(backButton);

17 buttonLayout->addStretch();

18 buttonLayout->addWidget(closeButton);

19 QVBoxLayout *mainLayout = new QVBoxLayout;

20 mainLayout->addLayout(buttonLayout);

21 mainLayout->addWidget(textBrowser);

22 setLayout(mainLayout);

23 connect(homeButton, SIGNAL(clicked()),

24 textBrowser, SLOT(home()));

25 connect(backButton, SIGNAL(clicked()),

26 textBrowser, SLOT(backward()));

27 connect(closeButton, SIGNAL(clicked()),

28 this, SLOT(close()));

29 connect(textBrowser, SIGNAL(sourceChanged(const QUrl &)),

30 this, SLOT(updateWindowTitle()));

31 textBrowser->setSearchPaths(QStringList() << path << ":/images");

32 textBrowser->setSource(page);

33 }

ΠœΡ‹ устанавливаСм Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Qt::WA_GroupLeader, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΠΌ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠΊΠ½Π° HelpBrowser Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ· ΠΌΠΎΠ΄Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… ΠΎΠΊΠΎΠ½. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΠΎΠ΄Π°Π»ΡŒΠ½Ρ‹Π΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Π΅ ΠΎΠΊΠ½Π° Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΎΠΊΠ½Π°ΠΌΠΈ прилоТСния. Однако ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ послС запроса ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ с ΠΌΠΎΠ΄Π°Π»ΡŒΠ½Ρ‹ΠΌ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹ΠΌ ΠΎΠΊΠ½ΠΎΠΌ, Ρ‚Π°ΠΊ ΠΈ с Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ систСмы ΠΏΠΎΠΌΠΎΡ‰ΠΈ. Установка Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° Qt::WA_GroupLeader Π΄Π΅Π»Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ Ρ‚Π°ΠΊΠΎΠΉ Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹.

ΠœΡ‹ обСспСчиваСм Π΄Π²Π° ΠΏΡƒΡ‚ΠΈ поиска: ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ опрСдСляСт ΠΏΡƒΡ‚ΡŒ Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ прилоТСния, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ опрСдСляСт располоТСниС рСсурсов ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. HTML ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ссылки Π½Π° изобраТСния Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС ΠΈ ссылки Π½Π° рСсурсы ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΏΡƒΡ‚ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с символов :/ (Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅ ΠΈ слСш). ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ page содСрТит имя Ρ„Π°ΠΉΠ»Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΊΠΈ HTML (anchor).

01 void HelpBrowser::updateWindowTitle()

02 {

03 setWindowTitle(tr("Help: %1")

04 .arg(textBrowser->documentTitle()));

05 }

ΠŸΡ€ΠΈ всяком ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ исходной страницы вызываСтся слот updateWindowTitle(). Ѐункция documentTitle() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ тСкст, содСрТащийся Π² Ρ‚Π΅Π³Π΅ <title> этой страницы.

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

02 {

03 QString path = QApplication::applicationDirPath() + "/doc";

04 HelpBrowser *browser = new HelpBrowser(path, page);

05 browser->resize(500, 400);

06 browser->show();

07 }

Π’ статичСской Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ 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 <QApplication>

02 #include <QAssistantClient>

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, ΠΈ поэтому ΠΌΡ‹ Π½Π΅ станСм здСсь ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ эти свСдСния.

Π’ качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ QTextBrowser ΠΈΠ»ΠΈ Qt Assistant ΠΌΠΎΠΆΠ½ΠΎ ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ зависящиС ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ обСспСчСния ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ ΠΏΠΎΠΌΠΎΡ‰ΠΈ. Для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Windows ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ систСмы ΠΏΠΎΠΌΠΎΡ‰ΠΈ Windows HTML Help ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π½ΠΈΠΌ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Internet Explorer ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Microsoft. Π’Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для этого класс Qt QProcess ΠΈΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ срСду ActiveQt. Для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ X11 подходящий ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠ³ Π±Ρ‹ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ Π² создании Ρ„Π°ΠΉΠ»ΠΎΠ² HTML ΠΈ запускС Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°, с использованиСм QProcess. Π’ Mac OS X подсистСма Apple Help прСдоставляСт Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ возмоТности для Qt Assistant.