четверг, 4 марта 2010 г.

MessageBox в Qt

Подготовка к работе

За работу с всплывающими сообщениями в Qt отвечает модуль QMessageBox, поэтому необходимо подключить его в исходнике:

#include<QMessageBox>

Простой Message Box без обработки вариантов ответа

Создание простого Message Box без обработки вариантов ответа (по сути это просто всплывающее окно, убирается по нажатию на центр джойстика).

#include<QtGui/QApplication>
#include<QMessageBox>
int main(int argc, char *argv[])
{
  QApplication app(argc, argv);
  QMessageBox msgBox;
  msgBox.setText("Hello Here");
  msgBox.exec();
  app.quit();
  return 1;
}

"Умный" Message Box с обработкой вариантов ответа

Для интереса добавим появление этого бокса по нажатию на кнопку: Создаем на форме кнопку, жмем на ней правой кнопкой мыши - Перейти к слоту. Выбираем clicked() и вставляем туда следующий код:

QMessageBox msgBox;
// Заголовок сообщения
msgBox.setText("Testing.."); 
// Тип иконки сообщения
msgBox.setIcon(QMessageBox::Information); 
// Основное сообщение Message Box
msgBox.setInformativeText("Just show infornation."); 
// Добавление реагирования на софт клавиши
msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); 
// На какой кнопке фокусироваться по умолчанию
msgBox.setDefaultButton(QMessageBox::Ok); 

/* Запускаем QMessageBox. После выполнения, в ret будет лежать значение кнопки, на которую нажали - это необходимо для дальнейшей обработки событий*/
int ret = msgBox.exec(); 
// Собственно вот этот case и отвечает за обработку событий
switch (ret) {   
case QMessageBox::Save:
     // Сюда пишем обработку события Cancel
     break;
  case QMessageBox::Ok:
     // Сюда пишем обработку события Ok
     break;
  default:
     // Сюда пишем обработку события по умолчанию
     break;
}

Несколько "быстрых" вариантов создания MessageBox

QMessageBox::warning(0,"Warning", "Warning message text");
QMessageBox::information(0, "Information", "Information message text");
QMessageBox::critical(0, "Critical", "Critical message text");

Взято отсюда

Комментариев нет:

Отправить комментарий