Окна сообщений QMessageBox
Оглавление
Не стоит создавать собственные диалоговые окна для вывода сообщений на экран, ведь для этого можно воспользоваться уже готовыми окнами, предоставляемыми классом QMessageBox. Окно сообщения — это самый простой элемент пользовательского интерфейса, который отображает текстовое сообщение и ожидает реакции со стороны пользователя. Его основное назначение состоит в информировании о совершении определенного события. Все окна, предоставляемые классом QMessageBox, — модальные. Они могут содержать кнопки, заголовок и текст сообщения.
Класс QMessageBox предоставляет целую серию статических методов, с помощью которых можно создавать окна сообщений. Эти методы предоставляют поддержку для трех уровней:
Тип окна выбирается в зависимости от обстоятельств. Окна могут содержать до трех кнопок.
Это очень удобно, так как не нужно писать дополнительного кода для реализации вывода сообщения. Можно применять такие окна для отладочных целей — вывести необходимую информацию и приостановить выполнение программы.
{рис}
Окно сообщения можно реализовать следующим образом:
QMessageBox* pmbx =
new QMessageBox("MessageBox",
"<b>A</b> <i>Simple</i> <u>Message</u>",
QMessageBox::Information,
QMessageBox::Yes,
QMessageBox::No,
QMessageBox::Cancel | QMessageBox::Escape);
int n = pmbx->exec();
delete pmbx;
if (n == QMessageBox::Yes)
{
//Нажата кнопка Yes
}
Это окно создается динамически. В первом параметре конструктора передается текст заголовка окна, во втором параметре — текст сообщения, в котором можно использовать теги HTML. Третий параметр задает предопределенное растровое изображение, которое будет отображено слева.
Три последних параметра задают кнопки, которые будут размещены в окне диалога. Обратите внимание на последнюю кнопку: всегда определяйте кнопку Cancel (Отмена) как клавишу <Escape>, так как пользователи часто нажимают именно ее для отмены действия. Вызов метода exec() объекта класса QMessageBox приводит к остановке приема событий для основной программы и ожиданию нажатия на одну из кнопок окна сообщения. После нажатия метод exec() возвращает идентификатор кнопки, который сохраняется в переменной n. Оператор delete удаляет из памяти виджет окна сообщения. В операторе if проверяется значение нажатой кнопки на равенство значению кнопки Yes (Да).
Параметры, передаваемые в конструктор, можно установить с помощью методов, определенных в классе QMessageBox. Текст сообщения устанавливается методом setText(), а текст кнопки — методом setButtonText(). Первым параметром в метод setButtonText() необходимо передать один из целочисленных идентификаторов, вторым — текст. При помощи метода setWindowTitle() устанавливается текст заголовка окна. Метод setIcon() устанавливает растровое изображение, для этого нужно передать в него одну из констант. Если указанных в этой таблице растровых изображений недостаточно, то можно создать и установить свое собственное, передав объект класса QPixmap в метод setIconPixmap().
Читать далее: Окна информационных сообщений в Qt