Класс QMessageBox
Класс QMessageBox предоставляет модальный диалог для информирования пользователя или для задавания ему вопроса и получения ответа. Подробнее...
| Заголовок: | #include <QMessageBox> |
| CMake: | find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Наследует: | QDialog |
Типы
| Перечисление | ButtonRole { InvalidRole, AcceptRole, RejectRole, DestructiveRole, ActionRole, …, ResetRole } |
| Перечисление | Icon { NoIcon, Question, Information, Warning, Critical } |
| Перечисление | StandardButton { Ok, Open, Save, Cancel, Close, …, ButtonMask } |
| Флаги | StandardButtons |
Свойства
|
|
Открытые функции
| QMessageBox(QMessageBox::Icon icon, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = NoButton, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint) | |
| QMessageBox(QWidget *parent = nullptr) | |
| virtual | ~QMessageBox() |
| void | addButton(QAbstractButton *button, QMessageBox::ButtonRole role) |
| QPushButton * | addButton(const QString &text, QMessageBox::ButtonRole role) |
| QPushButton * | addButton(QMessageBox::StandardButton button) |
| QAbstractButton * | button(QMessageBox::StandardButton which) const |
| QMessageBox::ButtonRole | buttonRole(QAbstractButton *button) const |
| QList<QAbstractButton *> | buttons() const |
| QCheckBox * | checkBox() const |
| QAbstractButton * | clickedButton() const |
| QPushButton * | defaultButton() const |
| QString | detailedText() const |
| QAbstractButton * | escapeButton() const |
| QMessageBox::Icon | icon() const |
| QPixmap | iconPixmap() const |
| QString | informativeText() const |
| void | open(QObject *receiver, const char *member) |
| void | removeButton(QAbstractButton *button) |
| void | setCheckBox(QCheckBox *cb) |
| void | setDefaultButton(QPushButton *button) |
| void | setDefaultButton(QMessageBox::StandardButton button) |
| void | setDetailedText(const QString &text) |
| void | setEscapeButton(QAbstractButton *button) |
| void | setEscapeButton(QMessageBox::StandardButton button) |
| void | setIcon(QMessageBox::Icon) |
| void | setIconPixmap(const QPixmap &pixmap) |
| void | setInformativeText(const QString &text) |
| void | установитьСтандартныеКнопки(QMessageBox::StandardButtons buttons) |
| void | установитьТекст(const QString &text) |
| void | установитьФорматТекста(Qt::TextFormat format) |
| void | установитьФлагиВзаимодействияСТекстом(Qt::TextInteractionFlags flags) |
| void | установитьМодальностьОкна(Qt::WindowModality windowModality) |
| void | установитьЗаголовокОкна(const QString &title) |
| QMessageBox::StandardButton | стандартнаяКнопка(QAbstractButton *button) const |
| QMessageBox::StandardButtons | стандартныеКнопки() const |
| QString | текст() const |
| Qt::TextFormat | форматТекста() const |
| Qt::TextInteractionFlags | флагиВзаимодействияСТекстом() const |
Открытые слоты
| virtual int | выполнить() override |
Сигналы
| void | кнопкаНажата(QAbstractButton *button) |
Статические открытые члены
| void | оПрограмме(QWidget *parent, const QString &title, const QString &text) |
| void | оQt(QWidget *parent, const QString &title = QString()) |
| QMessageBox::StandardButton | критическоеСообщение(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton) |
| QMessageBox::StandardButton | информационноеСообщение(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton) |
| QMessageBox::StandardButton | вопрос(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = StandardButtons(Yes | No), QMessageBox::StandardButton defaultButton = NoButton) |
| QMessageBox::StandardButton | предупреждение(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton) |
Переопределённые защищённые функции
| virtual void | changeEvent(QEvent *ev) override |
| virtual void | closeEvent(QCloseEvent *e) override |
| virtual bool | event(QEvent *e) override |
| virtual void | keyPressEvent(QKeyEvent *e) override |
| virtual void | resizeEvent(QResizeEvent *event) override |
| virtual void | showEvent(QShowEvent *e) override |
Подробное описание
Диалоговое окно с сообщением отображает основное сообщение, чтобы проинформировать пользователя о ситуации, дополнительное сообщение, чтобы подробнее объяснить предупреждение или задать пользователю вопрос, и необязательный подробный текст, чтобы предоставить еще больше данных, если пользователь запросит его. Диалоговое окно с сообщением также может отображать значок и стандартные кнопки для обработки ответа пользователя.
Предоставляются два API для использования QMessageBox: API на основе свойств и статические функции. Вызов одной из статических функций является более простым подходом, но он менее гибкий, чем использование API на основе свойств, и результат менее информативен. Рекомендуется использовать API на основе свойств.
API на основе свойств
Чтобы использовать API на основе свойств, создайте экземпляр QMessageBox, задайте необходимые свойства и вызовите exec(), чтобы показать сообщение. Самая простая конфигурация — задать только свойство текста сообщения.
QMessageBox msgBox;
msgBox.setText("The document has been modified.");
msgBox.exec(); Пользователь должен нажать кнопку ОК, чтобы закрыть окно сообщения. Остальная часть графического интерфейса блокируется до закрытия окна сообщения.
Лучше, чем просто предупредить пользователя о событии, также спросить его, что делать. Храните вопрос в свойстве дополнительного текста, и установите свойство стандартных кнопок в набор кнопок, которые вы хотите в качестве набора ответов пользователя. Кнопки задаются путем комбинирования значений из StandardButtons с помощью побитового оператора ИЛИ. Порядок отображения кнопок зависит от платформы. Например, в Windows кнопка Сохранить отображается слева от кнопки Отмена, а в Mac OS порядок обратный.
Отметьте одну из ваших стандартных кнопок как по умолчанию.
QMessageBox msgBox;
msgBox.setText("The document has been modified.");
msgBox.setInformativeText("Do you want to save your changes?");
msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Save);
int ret = msgBox.exec(); Это подход, рекомендованный в Руководстве по стилю macOS. Аналогичные рекомендации применяются для других платформ, но обратите внимание на различные способы обработки дополнительного текста для разных платформ.
Слот exec() возвращает значение StandardButtons нажатой кнопки.
switch (ret) {
case QMessageBox::Save:
// Save was clicked
break;
case QMessageBox::Discard:
// Don't Save was clicked
break;
case QMessageBox::Cancel:
// Cancel was clicked
break;
default:
// should never be reached
break;
} Чтобы предоставить пользователю больше информации, помогающей ему ответить на вопрос, задайте свойство подробного текста. Если свойство подробного текста задано, будет показана кнопка Показать подробности….
Нажатие кнопки Показать подробности… отображает подробный текст.
Форматирование Rich Text и свойство Text Format
Свойство подробного текста всегда интерпретируется как обычный текст. Свойства основного текста и дополнительного текста могут быть как обычным, так и форматированным текстом. Эти строки интерпретируются в соответствии с настройкой свойства формата текста. Значение по умолчанию — автоматическое определение.
Обратите внимание, что для некоторых строк обычного текста, содержащих метасимволы XML, тест автоматического определения форматированного текста может завершиться ошибкой, что приведет к неверной интерпретации строки обычного текста как форматированного текста. В этих редких случаях используйте Qt::convertFromPlainText(), чтобы преобразовать строку обычного текста в визуально эквивалентную строку форматированного текста, или явно задайте свойство формата текста с помощью setTextFormat().
Уровни серьезности и свойства Icon и Pixmap
QMessageBox поддерживает четыре предопределенных уровня серьезности сообщений или типа сообщений, которые действительно различаются только предопределённым отображаемым значком. Укажите один из четырёх предопределенных типов сообщений, установив свойство icon на одно из предопределённых значков. Следующие правила являются рекомендациями:
| Вопрос | Для задавания вопроса во время нормальной работы. | |
| Информация | Для сообщения об информации о нормальной работе. | |
| Предупреждение | Для сообщения о некритичных ошибках. | |
| Критический | Для сообщения о критических ошибках. |
Предопределённые значки не определяются QMessageBox, а предоставляются стилем. Значение по умолчанию — Без значка. Окна сообщений в других случаях одинаковы. При использовании стандартного значка используйте рекомендованный в таблице или тот, который рекомендован руководством по стилю для вашей платформы. Если ни один из стандартных значков не подходит для вашего окна сообщения, вы можете использовать пользовательский значок, установив свойство icon pixmap вместо свойства icon.
Подводя итог, чтобы установить значок, используйте либо setIcon() для одного из стандартных значков, либо setIconPixmap() для пользовательского значка.
API статических функций
Создание окон сообщений с помощью API статических функций, хотя и удобно, менее гибко, чем использование API на основе свойств, поскольку сигнатуры статических функций не содержат параметров для установки свойств информационного текста и подробного текста. Одним из решений этой проблемы было использование параметра title в качестве основного текста окна сообщения и параметра text в качестве информативного текста окна сообщения. Поскольку это очевидно ухудшает читабельность окна сообщения, руководства по платформам не рекомендуют это. Руководства по интерфейсу пользователя Microsoft Windows рекомендуют использовать имя приложения в качестве заголовка окна, что означает, что если у вас есть информативный текст в дополнение к вашему основному тексту, вы должны объединить его с параметром text.
Обратите внимание, что сигнатуры статических функций изменены относительно параметров кнопок, которые теперь используются для установки стандартных кнопок и кнопки по умолчанию.
Доступны статические функции для создания окон сообщений типа информация(), вопрос(), предупреждение() и критическая()
int ret = QMessageBox::warning(this, tr("My Application"),
tr("The document has been modified.\n"
"Do you want to save your changes?"),
QMessageBox::Save | QMessageBox::Discard
| QMessageBox::Cancel,
QMessageBox::Save); Пример стандартных диалогов показывает, как использовать QMessageBox и другие встроенные диалоги Qt.
Расширенное использование
Если стандартные кнопки не достаточно гибкие для вашего окна сообщения, вы можете использовать перегрузку addButton(), которая принимает текст и ButtonRole для добавления пользовательских кнопок. ButtonRole используется QMessageBox для определения порядка кнопок на экране (который варьируется в зависимости от платформы). Вы можете проверить значение clickedButton() после вызова exec(). Например,
QMessageBox msgBox;
QPushButton *connectButton = msgBox.addButton(tr("Connect"), QMessageBox::ActionRole);
QPushButton *abortButton = msgBox.addButton(QMessageBox::Abort);
msgBox.exec();
if (msgBox.clickedButton() == connectButton) {
// connect
} else if (msgBox.clickedButton() == abortButton) {
// abort
} Ключи по умолчанию и Esc
Кнопку по умолчанию (т. е. кнопку, активируемую при нажатии клавиши Enter) можно указать с помощью setDefaultButton(). Если кнопка по умолчанию не указана, QMessageBox пытается найти её на основе ролей кнопок, используемых в окне сообщения.
Кнопку Esc (кнопку, активируемую при нажатии клавиши Esc) можно указать с помощью setEscapeButton(). Если кнопка Esc не указана, QMessageBox пытается найти её по следующим правилам:
- Если есть только одна кнопка, она активируется при нажатии Esc.
- Если есть кнопка Отмена, она активируется при нажатии Esc.
- Если есть ровно одна кнопка, имеющая роль Отклонения или роль Нет, она активируется при нажатии Esc.
Если кнопку Esc нельзя определить по этим правилам, нажатие Esc не имеет эффекта.
См. также QDialogButtonBox, Справочник по проектированию пользовательского интерфейса: Диалоговые окна сообщений, Пример стандартных диалоговых окон и Пример приложения Qt Widgets.
Документация по типам членов
перечисление QMessageBox::ButtonRole
Это перечисление описывает роли, которые могут быть использованы для описания кнопок в блоке кнопок. Комбинации этих ролей являются флагами, используемыми для описания различных аспектов их поведения.
| Константа | Значение | Описание |
|---|---|---|
QMessageBox::InvalidRole |
-1 |
Кнопка недопустима. |
QMessageBox::AcceptRole |
0 |
Нажатие на кнопку приводит к принятию диалогового окна (например, ОК). |
QMessageBox::RejectRole |
1 |
Нажатие на кнопку приводит к отклонению диалогового окна (например, Отмена). |
QMessageBox::DestructiveRole |
2 |
Нажатие на кнопку вызывает разрушающее изменение (например, для отмены изменений) и закрывает диалоговое окно. |
QMessageBox::ActionRole |
3 |
Нажатие на кнопку приводит к изменениям элементов внутри диалогового окна. |
QMessageBox::HelpRole |
4 |
Нажатие на кнопку позволяет запросить помощь. |
QMessageBox::YesRole |
5 |
Кнопка типа "Да". |
QMessageBox::NoRole |
6 |
Кнопка типа "Нет". |
QMessageBox::ApplyRole |
8 |
Кнопка применяет текущие изменения. |
QMessageBox::ResetRole |
7 |
Кнопка сбрасывает поля диалогового окна до значений по умолчанию. |
См. также StandardButton.
перечисление QMessageBox::Icon
Это перечисление имеет следующие значения:
| Константа | Значение | Описание |
|---|---|---|
QMessageBox::NoIcon |
0 |
диалоговое окно не имеет значка. |
QMessageBox::Question |
4 |
значок, указывающий, что сообщение задаёт вопрос. |
QMessageBox::Information |
1 |
значок, указывающий, что сообщение стандартное. |
QMessageBox::Warning |
2 |
значок, указывающий, что сообщение является предупреждением, но с ним можно справиться. |
QMessageBox::Critical |
3 |
значок, указывающий, что сообщение представляет собой критическую проблему. |
перечисление QMessageBox::StandardButtonфлаги QMessageBox::StandardButtons
Эти перечисления описывают флаги для стандартных кнопок. Каждая кнопка имеет определённую ButtonRole.
| Константа | Значение | Описание |
|---|---|---|
QMessageBox::Ok |
0x00000400 |
Кнопка "ОК", определенная с помощью AcceptRole. |
QMessageBox::Open |
0x00002000 |
Кнопка "Открыть", определенная с помощью AcceptRole. |
QMessageBox::Save |
0x00000800 |
Кнопка "Сохранить", определенная с помощью AcceptRole. |
QMessageBox::Cancel |
0x00400000 |
Кнопка "Отмена", определенная с помощью RejectRole. |
QMessageBox::Close |
0x00200000 |
Кнопка "Закрыть", определенная с помощью RejectRole. |
QMessageBox::Discard |
0x00800000 |
Кнопка "Отклонить" или "Не сохранять", в зависимости от платформы, определенная с помощью DestructiveRole. |
QMessageBox::Apply |
0x02000000 |
Кнопка "Применить", определенная с помощью ApplyRole. |
QMessageBox::Reset |
0x04000000 |
Кнопка "Сбросить", определенная с помощью ResetRole. |
QMessageBox::RestoreDefaults |
0x08000000 |
Кнопка "Восстановить значения по умолчанию", определенная с помощью ResetRole. |
QMessageBox::Help |
0x01000000 |
Кнопка "Справка", определенная с помощью HelpRole. |
QMessageBox::SaveAll |
0x00001000 |
Кнопка "Сохранить все", определенная с помощью AcceptRole. |
QMessageBox::Yes |
0x00004000 |
Кнопка "Да", определенная с помощью YesRole. |
QMessageBox::YesToAll |
0x00008000 |
Кнопка "Да для всех", определенная с помощью YesRole. |
QMessageBox::No |
0x00010000 |
Кнопка "Нет", определенная с помощью NoRole. |
QMessageBox::NoToAll |
0x00020000 |
Кнопка "Нет для всех", определенная с помощью NoRole. |
QMessageBox::Abort |
0x00040000 |
Кнопка "Прервать", определенная с помощью RejectRole. |
QMessageBox::Retry |
0x00080000 |
Кнопка "Повторить", определенная с помощью AcceptRole. |
QMessageBox::Ignore |
0x00100000 |
Кнопка "Пропустить", определенная с помощью AcceptRole. |
QMessageBox::NoButton |
0x00000000 |
Недействительная кнопка. |
Следующие значения устарели:
| Константа | Значение | Описание |
|---|---|---|
QMessageBox::YesAll |
YesToAll |
Используйте YesToAll вместо этого. |
QMessageBox::NoAll |
NoToAll |
Используйте NoToAll вместо этого. |
QMessageBox::Default |
0x00000100 |
Используйте аргумент defaultButton метода information(), warning() и т.д. вместо этого или вызовите setDefaultButton(). |
QMessageBox::Escape |
0x00000200 |
Вызовите setEscapeButton() вместо этого. |
QMessageBox::FlagMask |
0x00000300 |
|
QMessageBox::ButtonMask |
~FlagMask |
Тип StandardButtons является псевдонимом для QFlags<StandardButton>. Он хранит логическое ИЛИ комбинацию значений StandardButton.
См. также ButtonRole и standardButtons.
Документация свойств
detailedText : QString
Это свойство содержит текст, который будет отображаться в области подробностей.
Текст будет интерпретироваться как обычный текст.
По умолчанию это свойство содержит пустую строку.
Функции доступа:
| QString | detailedText() const |
| void | setDetailedText(const QString &text) |
См. также QMessageBox::text и QMessageBox::informativeText.
icon : Icon
Это свойство содержит значок сообщения.
Значок диалогового окна сообщения можно указать одним из значений:
- QMessageBox::NoIcon
- QMessageBox::Question
- QMessageBox::Information
- QMessageBox::Warning
- QMessageBox::Critical
По умолчанию используется QMessageBox::NoIcon.
Пиксель, используемый для отображения значка, зависит от текущего стиля интерфейса пользователя. Вы также можете задать пользовательский пиксель для значка, установив свойство icon pixmap.
Функции доступа:
| QMessageBox::Icon | icon() const |
| void | setIcon(QMessageBox::Icon) |
См. также iconPixmap.
iconPixmap : QPixmap
Это свойство содержит текущий значок.
Значок, в настоящее время используемый диалоговым окном сообщения. Обратите внимание, что часто трудно нарисовать один пиксель, который выглядит уместно во всех стилях пользовательского интерфейса; вы можете захотеть предоставить другой пиксель для каждой платформы.
По умолчанию это свойство не определено.
Функции доступа:
| QPixmap | iconPixmap() const |
| void | setIconPixmap(const QPixmap &pixmap) |
См. также icon.
informativeText : QString
Это свойство содержит информативный текст, который предоставляет более полное описание сообщения.
Информативный текст можно использовать для расширения текста text(), чтобы предоставить пользователю больше информации. В macOS этот текст отображается мелким системным шрифтом под text(). На других платформах он просто добавляется к существующему тексту.
По умолчанию это свойство содержит пустую строку.
Функции доступа:
| QString | informativeText() const |
| void | setInformativeText(const QString &text) |
См. также QMessageBox::text и QMessageBox::detailedText.
standardButtons : StandardButtons
набор стандартных кнопок в диалоговом окне сообщения
Это свойство управляет использованием стандартных кнопок диалоговым окном сообщения.
По умолчанию это свойство не содержит стандартных кнопок.
Функции доступа:
| QMessageBox::StandardButtons | standardButtons() const |
| void | setStandardButtons(QMessageBox::StandardButtons buttons) |
См. также addButton().
text : QString
Это свойство содержит текст диалогового окна сообщения для отображения.
Текст будет интерпретироваться как обычный или форматированный текст в зависимости от настройки формата текста (QMessageBox::textFormat). Значение по умолчанию - Qt::AutoText, то есть диалоговое окно сообщения попытается автоматически определить формат текста.
Значение по умолчанию этого свойства — пустая строка.
Функции доступа:
| QString | text() const |
| void | setText(const QString &text) |
См. также textFormat, QMessageBox::informativeText и QMessageBox::detailedText.
textFormat : Qt::TextFormat
Это свойство хранит формат текста, отображаемого в окне сообщения.
Текущий формат текста, используемый в окне сообщения. См. перечисление Qt::TextFormat для объяснения возможных вариантов.
Формат по умолчанию — Qt::AutoText.
Функции доступа:
| Qt::TextFormat | textFormat() const |
| void | setTextFormat(Qt::TextFormat format) |
См. также setText().
[since 5.1] textInteractionFlags : Qt::TextInteractionFlags
Определяет, как метка окна сообщения должна взаимодействовать с пользовательским вводом.
Значение по умолчанию зависит от стиля.
Это свойство было введено в Qt 5.1.
Функции доступа:
| Qt::TextInteractionFlags | textInteractionFlags() const |
| void | setTextInteractionFlags(Qt::TextInteractionFlags flags) |
См. также QStyle::SH_MessageBox_TextInteractionFlags.
Документация по членам функции
QMessageBox::QMessageBox(QMessageBox::Icon icon, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = NoButton, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint)
Создает окно сообщения с заданным icon, title, text и стандартными buttons. Стандартные или пользовательские кнопки можно добавлять в любое время с помощью addButton(). Аргументы parent и f передаются конструктору QDialog.
Окно сообщения — это диалоговое окно с модалью приложения.
В macOS, если parent не nullptr и вы хотите, чтобы ваше окно сообщения отображалось как Qt::Sheet этого родительского окна, установите модальное окно сообщения в Qt::WindowModal (по умолчанию). В противном случае окно сообщения будет стандартным диалоговым окном.
См. также setWindowTitle(), setText(), setIcon() и setStandardButtons().
QMessageBox::QMessageBox(QWidget *parent = nullptr)
Создает окно сообщения без текста и кнопок. parent передаётся конструктору QDialog.
В macOS, если вы хотите, чтобы ваше окно сообщения отображалось как Qt::Sheet родительского окна, установите модальное окно сообщения в Qt::WindowModal или используйте open(). В противном случае окно сообщения будет стандартным диалоговым окном.
[signal] void QMessageBox::buttonClicked(QAbstractButton *button)
Этот сигнал генерируется всякий раз, когда в QMessageBox нажимается кнопка. Кнопка, которая была нажата, возвращается в button.
[override virtual slot] int QMessageBox::exec()
Переопределяет: QDialog::exec().
Отображает окно сообщения как модальное диалоговое окно, блокируя выполнение, пока пользователь его не закроет.
При использовании QMessageBox со стандартными кнопками эта функция возвращает значение StandardButton, указывающее на нажатую стандартную кнопку. При использовании QMessageBox с настраиваемыми кнопками эта функция возвращает неявное значение; используйте clickedButton(), чтобы определить, какая кнопка была нажата.
Примечание: Функция result() также возвращает значение StandardButton вместо QDialog::DialogCode.
Пользователи не могут взаимодействовать ни с каким другим окном в том же приложении, пока не закроют диалоговое окно, нажав кнопку или используя механизм, предоставленный системой окон.
[virtual] QMessageBox::~QMessageBox()
Уничтожает диалоговое окно с сообщением.
[static] void QMessageBox::about(QWidget *parent, const QString &title, const QString &text)
Отображает простое диалоговое окно «О программе» с заголовком title и текстом text. Родительским окном диалогового окна является parent.
about() ищет подходящую иконку в четырёх местах:
- В первую очередь используется parent->icon(), если она существует.
- В противном случае, используется верхнее окно, содержащее parent.
- Если это не удаётся, используется активное окно.
- В качестве последнего варианта используется иконка «Информация».
Диалоговое окно «О программе» имеет единственную кнопку «ОК». На macOS диалоговое окно «О программе» всплывает как модальное окно; на других платформах оно в настоящее время является модальным для всего приложения.
См. также QWidget::windowIcon() и QApplication::activeWindow().
[static] void QMessageBox::aboutQt(QWidget *parent, const QString &title = QString())
Отображает простое диалоговое окно с информацией о Qt с заданным title и центрированным над parent (если parent не nullptr). Сообщение включает номер версии Qt, используемой приложением.
Это полезно для включения в меню Справка приложения, как показано в примере Меню.
QApplication предоставляет эту функциональность в качестве слота.
На macOS диалоговое окно «О Qt» всплывает как бескнопочное окно; на других платформах оно в настоящее время является модальным для всего приложения.
См. также QApplication::aboutQt().
void QMessageBox::addButton(QAbstractButton *button, QMessageBox::ButtonRole role)
Добавляет заданную button к диалоговому окну с сообщением со значением role.
См. также removeButton(), button() и setStandardButtons().
QPushButton *QMessageBox::addButton(const QString &text, QMessageBox::ButtonRole role)
Это перегруженная функция.
Создаёт кнопку с заданным text, добавляет её в диалоговое окно для заданного role и возвращает её.
QPushButton *QMessageBox::addButton(QMessageBox::StandardButton button)
Это перегруженная функция.
Добавляет стандартную button к диалоговому окну, если это возможно, и возвращает кнопку.
См. также setStandardButtons().
QAbstractButton *QMessageBox::button(QMessageBox::StandardButton which) const
Возвращает указатель, соответствующий стандартной кнопке which, или nullptr если стандартная кнопка отсутствует в этом диалоговом окне.
См. также standardButtons и standardButton().
QMessageBox::ButtonRole QMessageBox::buttonRole(QAbstractButton *button) const
Возвращает роль кнопки для указанной кнопки button. Эта функция возвращает InvalidRole, если button является nullptr или не была добавлена в диалоговое окно.
См. также buttons() и addButton().
QList<QAbstractButton *> QMessageBox::buttons() const
Возвращает список всех кнопок, добавленных в диалоговое окно.
См. также buttonRole(), addButton() и removeButton().
[override virtual protected] void QMessageBox::changeEvent(QEvent *ev)
Переопределяет: QWidget::changeEvent(QEvent *event).
[since 5.2] QCheckBox *QMessageBox::checkBox() const
Возвращает флажок, отображаемый в диалоговом окне. Это nullptr если флажок не задан.
Эта функция была добавлена в Qt 5.2.
См. также setCheckBox().
QAbstractButton *QMessageBox::clickedButton() const
Возвращает кнопку, на которую нажал пользователь, или nullptr если пользователь нажал клавишу Esc и кнопка escape button не была задана.
Если метод exec() ещё не был вызван, возвращает nullptr.
Пример:
QMessageBox messageBox(this);
QAbstractButton *disconnectButton =
messageBox.addButton(tr("Disconnect"), QMessageBox::ActionRole);
...
messageBox.exec();
if (messageBox.clickedButton() == disconnectButton) {
...
} См. также standardButton() и button().
[override virtual protected] void QMessageBox::closeEvent(QCloseEvent *e)
Переопределяет: QDialog::closeEvent(QCloseEvent *e).
[static] QMessageBox::StandardButton QMessageBox::critical(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton)
Открывает диалоговое окно с критическим сообщением с заданным title и text перед указанным виджетом parent.
Стандартные кнопки buttons добавляются в диалоговое окно. defaultButton указывает кнопку, используемую при нажатии Enter. defaultButton должен ссылаться на кнопку, заданную в buttons. Если defaultButton равен QMessageBox::NoButton, QMessageBox автоматически выбирает подходящую по умолчанию.
Возвращает идентификатор стандартной кнопки, на которую нажали. Если вместо этого была нажата Esc, возвращается кнопка escape button.
Диалоговое окно является приложением модального диалогового окна.
Предупреждение: Не удаляйте parent во время выполнения диалога. Если вы хотите это сделать, вы должны создать диалог самостоятельно, используя один из конструкторов QMessageBox.
См. также question(), warning() и information().
QPushButton *QMessageBox::defaultButton() const
Возвращает кнопку, которая должна быть кнопкой по умолчанию диалогового окна. Возвращает nullptr, если кнопка по умолчанию не была задана.
См. также setDefaultButton(), addButton() и QPushButton::setDefault().
QAbstractButton *QMessageBox::escapeButton() const
Возвращает кнопку, которая активируется при нажатии клавиши Escape.
По умолчанию, QMessageBox пытается автоматически определить кнопку Escape следующим образом:
- Если кнопка только одна, она становится кнопкой Escape.
- Если есть кнопка Отмена, она становится кнопкой Escape.
- Только на macOS, если есть ровно одна кнопка с ролью QMessageBox::RejectRole, она становится кнопкой Escape.
Когда кнопку Escape не удалось автоматически определить, нажатие Esc не оказывает никакого эффекта.
См. также setEscapeButton() и addButton().
END_OF_DOCUMENT_MARKER
[override virtual protected] bool QMessageBox::event(QEvent *e)
Переопределяет: QWidget::event(QEvent *event).
[static] QMessageBox::StandardButton QMessageBox::information(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton)
Открывает окно сообщения об информации с заданным title и text перед указанным виджетом parent.
Стандартные buttons добавляются в окно сообщения. defaultButton задаёт кнопку, используемую при нажатии Enter. defaultButton должен ссылаться на кнопку, заданную в buttons. Если defaultButton равен QMessageBox::NoButton, QMessageBox автоматически выбирает подходящую по умолчанию.
Возвращает идентификатор стандартной нажатой кнопки. Если вместо этого было нажато Esc, возвращается кнопка выхода.
Окно сообщения является приложением модальным диалоговым окном.
Предупреждение: Не удаляйте parent во время выполнения диалога. Если вы хотите это сделать, вы должны создать диалог самостоятельно, используя один из конструкторов QMessageBox.
См. также question(), warning() и critical().
[override virtual protected] void QMessageBox::keyPressEvent(QKeyEvent *e)
Переопределяет: QDialog::keyPressEvent(QKeyEvent *e).
void QMessageBox::open(QObject *receiver, const char *member)
Открывает диалог и подключает его сигнал finished() или buttonClicked() к слоту, указанному receiver и member. Если слот в member имеет указатель на первый параметр, подключение выполняется к buttonClicked(), в противном случае подключение выполняется к finished().
Сигнал будет отключён от слота при закрытии диалога.
[static] QMessageBox::StandardButton QMessageBox::question(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = StandardButtons(Yes | No), QMessageBox::StandardButton defaultButton = NoButton)
Открывает окно вопроса с заданным title и text перед указанным виджетом parent.
Стандартные buttons добавляются в окно сообщения. defaultButton задаёт кнопку, используемую при нажатии Enter. defaultButton должен ссылаться на кнопку, заданную в buttons. Если defaultButton равен QMessageBox::NoButton, QMessageBox автоматически выбирает подходящую по умолчанию.
Возвращает идентификатор стандартной нажатой кнопки. Если вместо этого было нажато Esc, возвращается кнопка выхода.
Окно сообщения является приложением модальным диалоговым окном.
Предупреждение: Не удаляйте parent во время выполнения диалога. Если вы хотите это сделать, вы должны создать диалог самостоятельно, используя один из конструкторов QMessageBox.
См. также information(), warning() и critical().
void QMessageBox::removeButton(QAbstractButton *button)
Удаляет button из панели кнопок без его удаления.
См. также addButton() и setStandardButtons().
[override virtual protected] void QMessageBox::resizeEvent(QResizeEvent *event)
Переопределяет: QDialog::resizeEvent(QResizeEvent *).
[since 5.2] void QMessageBox::setCheckBox(QCheckBox *cb)
Устанавливает флажок cb в диалоговом окне сообщения. Окно сообщения принимает владение флажком. Аргумент cb может быть nullptr для удаления существующего флажка из окна сообщения.
Эта функция была добавлена в Qt 5.2.
См. также checkBox().
void QMessageBox::setDefaultButton(QPushButton *button)
Устанавливает кнопку по умолчанию для окна сообщения в button.
См. также defaultButton(), addButton() и QPushButton::setDefault().
void QMessageBox::setDefaultButton(QMessageBox::StandardButton button)
Устанавливает кнопку по умолчанию для окна сообщения в button.
См. также addButton() и QPushButton::setDefault().
void QMessageBox::setEscapeButton(QAbstractButton *button)
Устанавливает кнопку, которая активируется при нажатии клавиши Esc, в button.
См. также escapeButton(), addButton() и clickedButton().
void QMessageBox::setEscapeButton(QMessageBox::StandardButton button)
Устанавливает кнопку, которая активируется при нажатии клавиши Esc, в button.
См. также addButton() и clickedButton().
void QMessageBox::setWindowModality(Qt::WindowModality windowModality)
Эта функция использует QWidget::setWindowModality().
Устанавливает режим работы окна сообщения в windowModality.
В macOS, если режим установлен в Qt::WindowModal и у окна сообщения есть родитель, то окно сообщения будет типом Qt::Sheet, иначе — стандартным диалоговым окном.
void QMessageBox::setWindowTitle(const QString &title)
Эта функция использует QWidget::setWindowTitle().
Устанавливает заголовок окна сообщения в title. В macOS заголовок окна игнорируется (как требуется руководством по macOS).
[override virtual protected] void QMessageBox::showEvent(QShowEvent *e)
Переопределяет: QDialog::showEvent(QShowEvent *event).
QMessageBox::StandardButton QMessageBox::standardButton(QAbstractButton *button) const
Возвращает значение перечисления стандартной кнопки, соответствующей данной кнопке button, или NoButton, если данная button не является стандартной кнопкой.
См. также button() и standardButtons().
[static] QMessageBox::StandardButton QMessageBox::warning(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton)
Открывает окно предупреждения с заданным title и text перед указанным виджетом parent.
Стандартные buttons добавляются в окно сообщения. defaultButton задаёт кнопку, используемую при нажатии Enter. defaultButton должен ссылаться на кнопку, заданную в buttons. Если defaultButton равен QMessageBox::NoButton, QMessageBox автоматически выбирает подходящую кнопку по умолчанию.
Возвращает идентификатор стандартной кнопки, на которую был нажат. Если вместо этого была нажата Esc, возвращается кнопка escape.
Диалоговое окно — это прикладное модальное диалоговое окно.
Предупреждение: Не удаляйте родительский элемент во время выполнения диалогового окна. Если вы хотите это сделать, вы должны создать диалоговое окно самостоятельно, используя один из конструкторов QMessageBox.
См. также question(), information(), и critical().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qmessagebox.html