Чтение онлайн

ЖАНРЫ

QT 4: программирование GUI на С++

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

Шрифт:

Всплывающие подсказки, комментарии в строке состояния и справки «что это такое?»

Всплывающая подсказка (tooltip) представляет собой небольшое текстовое сообщение, которое появляется при нахождении курсора мышки на виджете в течение определенного времени. Всплывающие подсказки отображаются на желтом фоне черными буквами. В основном они предназначены для пояснения назначения кнопок на панели инструментов.

Мы можем добавлять всплывающие подсказки к любым виджетам путем включения в программный код вызова функции QWidget::setToolTip. Например:

findButton->setToolTip(tr("Find next"));

Для установки всплывающей

подсказки для объекта QAction, который может быть добавлен к меню или панели инструментов, мы можем просто вызвать функцию setToolTip для этой команды. Например:

newAction = new QAction(tr("&New"), this);

newAction->setToolTip(tr("New document"));

Если мы явно не устанавливаем всплывающую подсказку, QAction автоматически сформирует ее на основе текста команды.

Комментарии в строке состояния (status tip) также представляют собой короткие текстовые сообщения, причем они обычно немного длиннее всплывающих подсказок. При нахождении курсора мышки на кнопке панели инструментов или на строке меню такой комментарий появляется в строке состояния. Для добавления к команде или к виджету отображаемого в строке состояния комментария необходимо вызвать функцию setStatusTip:

newAction->setStatusTip(tr("Create a new document"));

Рис. 16.1. В этом приложении отображаются всплывающая подсказка и комментарий в строке состояния.

В некоторых ситуациях желательно обеспечить больше информации о виджете, чем это возможно сделать с помощью всплывающих подсказок или комментариев в строке состояния. Например, у нас может возникнуть потребность в обеспечении сложного диалогового окна с пояснительным текстом для каждого поля без принуждения пользователя к вызову отдельного окна системы помощи. Режим «что это такое?» идеально подходит для этого. Когда окно находится в режиме «что это такое?», курсор приобретает форму «?» и пользователь может щелкнуть по любому компоненту интерфейса пользователя для получения текста помощи. Для входа в режим «что это такое?» пользователь может либо нажать на кнопку «?» в строке заголовка диалогового окна (в системе Windows и KDE), либо нажать сочетание клавиш Shift+F1.

Ниже приводится пример установки для диалогового окна текста справки «что это такое?»:

dialog->setWhatsThis(tr("<img src=\":/images/icon.png\">"

"&nbsp;The meaning of the Source field depends "

"on the Type field:"

"<ul>"

"<li><b>Books</b> have a Publisher"

"<li><b>Articles</b> have a Journal name with "

"volume and issue number"

"<li><b>Theses</b> have an Institution name "

"and a Department name"

"</ul>"));

Мы можем применять теги HTML для форматирования текста справки «что это такое?». В нашем примере мы используем изображение (которое указано в файле ресурсов приложения), маркированный список и жирный текст в некоторых местах. Теги и атрибуты, которые поддерживаются в Qt, приведены на веб-странице http://doc.trolltech.com/4.1/richtext-html-subset.html.

Рис. 16.2.

Диалоговое окно с отображением текста справки «что это такое?»

Кроме того, мы можем задавать текст справки «что это такое?» для команды:

openAct->setWhatsThis(tr("<img src=open.png>&nbsp;"

"Click this option to open an existing file."));

При задании для команды текста справки «что это такое?» он будет отображаться, когда пользователь в режиме справки «что это такое?» выбирает пункт меню, нажимает кнопку на панели инструментов или клавишу быстрого вызова команды. Когда компоненты пользовательского интерфейса главного окна приложения предусматривают вывод справки «что это такое?», обычно в меню Help (справка) содержится пункт What's This? (что это такое?) и панель инструментов содержит соответствующую кнопку. Это можно сделать путем создания команды What's This? при помощи статической функции QWhatsThis::createAction и добавления возвращаемой ею команды в меню Help и в панель инструментов. Класс QWhatsThis предоставляет также статические функции для программного входа и выхода из режима справки «что это такое?».

Использование 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.

Поделиться с друзьями: