Тип QML MessageDialog
Компонент диалога для отображения всплывающих сообщений. Подробнее...
| Заявление об импорте: | import QtQuick.Dialogs 1.3 |
| С тех пор как: | Qt 5.2 |
Свойства
- clickedButton : StandardButton
- detailedText : строка
- icon : QQuickStandardIcon::Icon
- informativeText : строка
- modality : Qt::WindowModality
- standardButtons : StandardButtons
- text : строка
- title : строка
- visible : bool
Сигналы
Методы
Подробное описание
Наиболее базовое применение MessageDialog — всплывающее предупреждение. Оно также позволяет пользователю реагировать различными способами в зависимости от включённых кнопок. Диалог изначально невидим. Вам необходимо сначала установить свойства по желанию, а затем установить visible в true или вызвать open().
Вот минимальный пример, демонстрирующий предупреждение и выход после ответа пользователя:
import QtQuick 2.2
import QtQuick.Dialogs 1.1
MessageDialog {
id: messageDialog
title: "May I have your attention please"
text: "It's so cool that you are using Qt Quick."
onAccepted: {
console.log("And of course you could only agree.")
Qt.quit()
}
Component.onCompleted: visible = true
} Существует несколько возможных обработчиков в зависимости от того, какие standardButtons имеет диалог и ButtonRole каждого из них. Например, обработчик onRejected будет вызван, если пользователь нажмёт кнопку Отмена, Закрыть или Прервать.
Окно MessageDialog автоматически является транзитным для своего родительского окна. Поэтому, объявите ли вы диалог внутри Item или внутри Window, диалог будет отображаться по центру над окном, содержащим элемент, или над окном, которое вы объявили.
Реализация MessageDialog будет платформенным диалогом сообщений, если это возможно. Если это невозможно, то он попытается создать QMessageBox. Если это тоже невозможно, то он вернётся к реализации QML, DefaultMessageDialog.qml. В этом случае вы можете настроить внешний вид, отредактировав этот файл. DefaultMessageDialog.qml содержит Rectangle для размещения содержимого диалога, поскольку некоторые встроенные системы не поддерживают несколько окон верхнего уровня. Когда диалог становится видимым, он автоматически будет обернут в Window, если это возможно, или просто переродится поверх основного окна, если может быть только одно окно.
Документация свойств
clickedButton : StandardButton
Это свойство хранит кнопку, нажатую пользователем. Его значение является одним из флагов, установленных для свойства standardButtons.
detailedText : строка
Текст, который должен отображаться в области подробностей, которая по умолчанию скрыта. Затем пользователь сможет нажать кнопку Показать подробности..., чтобы сделать её видимой.
См. также text.
icon : QQuickStandardIcon::Icon
Значок окна сообщения может быть указан одним из этих значений:
| без значка | StandardIcon.NoIcon |
Для простого текстового предупреждения. |
StandardIcon.Question |
Для задавания вопроса во время нормальной работы. | |
StandardIcon.Information |
Для сообщения информации о нормальной работе. | |
StandardIcon.Warning |
Для сообщения о некритичных ошибках. | |
StandardIcon.Critical |
Для сообщения о критических ошибках. |
По умолчанию StandardIcon.NoIcon.
Значения перечисления такие же, как в QMessageBox::Icon.
informativeText : строка
Информативный текст, который предоставляет более полное описание сообщения.
Информативный текст может быть использован для дополнения text, чтобы предоставить пользователю больше информации. В зависимости от платформы, он может отображаться в меньшем шрифте под текстом или просто добавляться к тексту.
См. также text.
modality : Qt::WindowModality
Определяет, должен ли диалог быть модальным относительно окна, содержащего родительский элемент диалога, модальным относительно всего приложения или немодальным.
По умолчанию Qt.WindowModal.
Модальность не означает, что есть какие-либо блокирующие вызовы ожидания подтверждения или отклонения диалога; это только то, что пользователю будет запрещено взаимодействовать с родительским окном и/или окнами приложения до закрытия диалога.
standardButtons : StandardButtons
В MessageDialog есть ряд кнопок внизу, каждая из которых имеет ButtonRole, определяющий, какой сигнал будет выпущен при нажатии кнопки. Вы также можете узнать, какая конкретная кнопка была нажата после факта через свойство clickedButton. Вы можете управлять доступными кнопками, задав standardButtons в виде комбинации побитовых ИЛИ следующих флагов:
| Константа | Описание |
|---|---|
StandardButton.Ok |
Кнопка ОК, определённая с помощью AcceptRole. |
StandardButton.Open |
Кнопка Открыть, определённая с помощью AcceptRole. |
StandardButton.Save |
Кнопка Сохранить, определённая с помощью AcceptRole. |
StandardButton.Cancel |
Кнопка Отмена, определённая с помощью RejectRole. |
StandardButton.Close |
Кнопка Закрыть, определённая с помощью RejectRole. |
StandardButton.Discard |
Кнопка Отбросить или Не сохранять, в зависимости от платформы, определённая с помощью DestructiveRole. |
StandardButton.Apply |
Кнопка Применить, определённая с помощью ApplyRole. |
StandardButton.Reset |
Кнопка Сбросить, определённая с помощью ResetRole. |
StandardButton.RestoreDefaults |
Кнопка Восстановить значения по умолчанию, определённая с помощью ResetRole. |
StandardButton.Help |
Кнопка Справка, определённая с помощью HelpRole. |
StandardButton.SaveAll |
Кнопка Сохранить всё, определённая с помощью AcceptRole. |
StandardButton.Yes |
Кнопка Да, определённая с помощью YesRole. |
StandardButton.YesToAll |
Кнопка Да для всех, определённая с помощью YesRole. |
StandardButton.No |
Кнопка Нет, определённая с помощью NoRole. |
StandardButton.NoToAll |
Кнопка Нет для всех, определённая с помощью NoRole. |
StandardButton.Abort |
Кнопка Прервать, определённая с помощью RejectRole. |
StandardButton.Retry |
Кнопка Повторить, определённая с помощью AcceptRole. |
StandardButton.Ignore |
Кнопка Пропустить, определённая с помощью AcceptRole. |
Например, следующий диалог задаст вопрос с 5 возможными ответами:
import QtQuick 2.2
import QtQuick.Dialogs 1.1
MessageDialog {
title: "Overwrite?"
icon: StandardIcon.Question
text: "file.txt already exists. Replace?"
detailedText: "To replace a file means that its existing contents will be lost. " +
"The file that you are copying now will be copied over it instead."
standardButtons: StandardButton.Yes | StandardButton.YesToAll |
StandardButton.No | StandardButton.NoToAll | StandardButton.Abort
Component.onCompleted: visible = true
onYes: console.log("copied")
onNo: console.log("didn't copy")
onRejected: console.log("aborted")
} По умолчанию StandardButton.Ok.
Значения перечисления совпадают со значениями в QMessageBox::StandardButtons.
text : строка
Основной текст для отображения.
title : строка
Заголовок окна диалога.
visible : логическое значение
Это свойство указывает, отображается ли диалог. По умолчанию это false.
См. также modality.
Документация по сигналам
accepted()
Этот сигнал подаётся, когда пользователь нажал любую кнопку, имеющую AcceptRole: ОК, Открыть, Сохранить, Сохранить всё, Повторить или Пропустить.
Соответствующий обработчик onAccepted.
Примечание: Соответствующий обработчик onAccepted.
apply()
Этот сигнал подаётся, когда пользователь нажал кнопку Применить.
Соответствующий обработчик onApply.
Примечание: Соответствующий обработчик onApply.
discard()
Этот сигнал подаётся, когда пользователь нажал кнопку Отбросить.
Соответствующий обработчик onDiscard.
Примечание: Соответствующий обработчик onDiscard.
help()
Этот сигнал подаётся, когда пользователь нажал кнопку Справка. В зависимости от платформы, диалог может не закрываться автоматически, поскольку справка вашего приложения может быть актуальна для текста, показанного в этом диалоге, чтобы помочь пользователю принять решение. Однако на других платформах нельзя отобразить диалог и окно справки одновременно. Если вы хотите быть уверены, что диалог закроется, вы можете установить visible в false в своём обработчике.
Соответствующий обработчик onHelp.
Примечание: Соответствующий обработчик onHelp.
no()
Этот сигнал подаётся, когда пользователь нажал любую кнопку, имеющую NoRole: Нет или Нет для всех.
Соответствующий обработчик onNo.
Примечание: Соответствующий обработчик onNo.
rejected()
Этот сигнал подаётся, когда пользователь закрыл диалог, закрыв окно диалога, нажав кнопку Отмена, Закрыть или Прервать в диалоге, или нажав клавишу назад или клавишу Escape.
Соответствующий обработчик onRejected.
Примечание: Соответствующий обработчик onRejected.
reset()
Этот сигнал подаётся, когда пользователь нажал любую кнопку, имеющую ResetRole: Сбросить или Восстановить значения по умолчанию.
Соответствующий обработчик onReset.
Примечание: Соответствующий обработчик onReset.
yes()
Этот сигнал подаётся, когда пользователь нажал любую кнопку, имеющую YesRole: Да или Да для всех.
Соответствующий обработчик onYes.
Примечание: Соответствующий обработчик onYes.
Документация по методам
void close()
Закрывает диалог.
void open()
Отображает диалог пользователю. Это эквивалентно установке visible в true.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qml-qtquick-dialogs-messagedialog.html