Всплывающие подсказки

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

В Qt нет необходимости создавать окно с подсказкой самому и следить за перемещениями указателя мыши. Весь процесс автоматизирован и максимально упрощен. Чтобы создать всплывающие подсказки для окна или любого другого компонента и управлять ими, нужно воспользоваться следующими методами из класса QWidget:

  • setToolTip() — задает текст вплывающей подсказки. В качестве параметра можно указать простой текст или текст в формате HTML. Чтобы отключить вывод подсказки, достаточно передать в этот метод пустую строку. Прототип метода:
void setToolTip(const QString &)
  • toolTip() — возвращает текст всплывающей подсказки. Прототип метода:
QString toolTip() const
  • setWhatsThis() — задает текст справки. Обычно этот метод используется для вывода информации большего объема, чем во всплывающей подсказке. Чтобы отобразить текст справки необходимо сделать компонент активным и нажать комбинацию клавиш <Shift>+<F1>. Кроме того, в заголовке окна может быть кнопка Справка. После нажатия этой кнопки вид курсора изменится на стрелку со знаком вопроса. Чтобы в этом случае отобразить текст справки следует щелкнуть мышью на компоненте. В качестве параметра можно указать простой текст или текст в формате HTML. Чтобы отключить вывод подсказки достаточно передать в этот метод пустую строку. Прототип метода:
void setWhatsThis(const QString &)
  • whatsThis() — возвращает текст справки. Прототип метода:
QString whatsThis() const

Создадим окно с кнопкой и зададим для них текст вплывающих подсказок и текст справки (листинг 3.13).

Листинг 3.13. Всплывающие подсказки

#include <QApplication>
#include <QWidget>
#include <QPushButton>

int main(int argc, char *argv[])
{
   QApplication app(argc, argv);
   QWidget window;
   window.setWindowTitle("Всплывающие подсказки");
   window.setWindowFlags(Qt::Window |
                         Qt::WindowCloseButtonHint |
                         Qt::WindowContextHelpButtonHint);
   window.resize(300, 70);

   QPushButton *button = new QPushButton("Закрыть окно", &window);
   button->setFixedSize(150, 30);
   button->move(75, 20);

   button->setToolTip("Это всплывающая подсказка для кнопки");
   window.setToolTip("Это всплывающая подсказка для окна");
   button->setWhatsThis("Это справка для кнопки");
   window.setWhatsThis("Это справка для окна");

   QObject::connect(button, SIGNAL(clicked()),
                    qApp, SLOT(quit()));
   window.show();
   return app.exec();
}

Учебник C++ (Qt Creator и MinGW)
Учебник C++ (Qt Creator и MinGW) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов