Вход/Регистрация
QT 4: программирование GUI на С++
вернуться

Саммерфилд Марк

Шрифт:

В данном разделе мы представим простой браузер системы помощи, показанный на рис. 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

  • Читать дальше
  • 1
  • ...
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: