Жасмин Бланшет

Книги → QT 4: программирование GUI на С++ → Использование 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 }

← предущий раздел следующая →

Страницы раздела: 1 2

Публикация компанией Dropbox кода Zulip – средства общения для IT-разработчиков

20.11.2015
Одной из одобрительно встреченных программистами инициатив, реализующихся в рамках акции Hack Week, стала публикация исходного кода приложения Zulip – веб-приложения для общения между собой разработчиков в сфере IT-технологий.

Объединение ОС Android и Chrome

17.11.2015
Слухи об объединении двух крупнейших ОС компании Google, Android и Chrome, гуляют по Интернету уже более 5 лет, но до сих пор этого не случилось, хотя очевидно, что с течением времени эти ОС становятся всё более похожими: так, в последнее время появилось немало Android-устройств, к которым прилагаются клавиатуры, а Chrome OS «научилась» работать с сенсорными экранами.

Конференция Linux Piter 2015

15.11.2015
Уже почти через неделю в Санкт-Петербурге впервые в истории пройдёт конференция, посвящённая проблемам свободного программного обеспечения – Linux Piter 2015.