Тип 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.
apply()
Этот сигнал испускается, когда пользователь нажал кнопку Применить.
Соответствующий обработчик onApply.
discard()
Этот сигнал испускается, когда пользователь нажал кнопку Отклонить.
Соответствующий обработчик onDiscard.
help()
Этот сигнал испускается, когда пользователь нажал кнопку Справка. В зависимости от платформы, диалоговое окно может не закрываться автоматически, так как помощь, предоставляемая вашим приложением, может быть актуальной для текста, показанного в этом диалоговом окне, чтобы помочь пользователю принять решение. Однако на других платформах невозможно отобразить диалоговое окно и окно справки одновременно. Если вы хотите быть уверены, что диалоговое окно закроется, вы можете установить visible в false в своем обработчике.
Соответствующий обработчик onHelp.
no()
Этот сигнал испускается, когда пользователь нажал любую кнопку с NoRole: Нет или Нет для всех.
Соответствующий обработчик onNo.
rejected()
Этот сигнал испускается, когда пользователь закрыл диалоговое окно, нажав кнопку Отмена, Закрыть или Прервать в диалоговом окне, или нажав кнопку назад или клавишу Esc.
Соответствующий обработчик onRejected.
reset()
Этот сигнал испускается, когда пользователь нажал любую кнопку с ResetRole: Сбросить или Восстановить значения по умолчанию.
Соответствующий обработчик onReset.
yes()
Этот сигнал испускается, когда пользователь нажал любую кнопку с YesRole: Да или Да для всех.
Соответствующий обработчик 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.13/qml-qtquick-dialogs-messagedialog.html