Тип QML MessageDialog
Компонент диалога для отображения всплывающих сообщений. Подробнее...
| Заявление об импорте: | import QtQuick.Dialogs 1.2 |
| С момента: | 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
} Существует несколько возможных обработчиков в зависимости от того, какие стандартные кнопки имеет диалог и ButtonRole каждой. Например, обработчик onRejected будет вызван, если пользователь нажмёт кнопку Отмена, Закрыть или Прервать.
Окно MessageDialog автоматически является временным для родительского окна. Таким образом, независимо от того, объявляете ли вы диалог внутри Item или внутри Window, диалог будет отображаться по центру над окном, содержащим элемент, или над окном, которое вы объявили.
Реализация MessageDialog будет платформенным диалогом сообщений, если это возможно. Если это невозможно, то он попытается создать экземпляр QMessageBox. Если это также невозможно, то он вернётся к реализации QML, DefaultMessageDialog.qml. В этом случае вы можете настроить внешний вид, отредактировав этот файл. DefaultMessageDialog.qml содержит Прямоугольник для размещения содержимого диалога, поскольку некоторые встроенные системы не поддерживают несколько окон верхнего уровня. При отображении диалога он будет автоматически обернут в 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. Вы можете управлять доступными кнопками, устанавливая стандартные кнопки в сочетание битовых операций следующих флагов:
| Константа | Описание |
|---|---|
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 : string
Основной текст для отображения.
title : string
Заголовок окна диалога.
visible : bool
Это свойство определяет, видимый ли диалог. По умолчанию это false.
См. также modality.
Документация по сигналам
accepted()
Этот сигнал испускается, когда пользователь нажал любую кнопку с AcceptRole: ОК, Открыть, Сохранить, Сохранить всё, Повторить или Пропустить.
Соответствующий обработчик onAccepted.
apply()
Этот сигнал испускается, когда пользователь нажал кнопку Применить.
Соответствующий обработчик onApply.
discard()
Этот сигнал испускается, когда пользователь нажал кнопку Отменить.
Соответствующий обработчик onDiscard.
help()
Этот сигнал испускается, когда пользователь нажал кнопку Справка. В зависимости от платформы, диалог может не закрываться автоматически, потому что справка вашего приложения должна быть актуальной для текста, показанного в этом диалоге, чтобы помочь пользователю принять решение. Однако на других платформах нельзя отобразить диалог и окно справки одновременно. Если вы хотите убедиться, что диалог закроется, вы можете установить visible на false в своём обработчике.
Соответствующий обработчик onHelp.
no()
Этот сигнал испускается, когда пользователь нажал любую кнопку с NoRole: Нет или Нет для всех.
Соответствующий обработчик onNo.
rejected()
Этот сигнал испускается, когда пользователь закрыл диалог, закрыв окно диалога, нажав на кнопку Отмена, Закрыть или Прервать в диалоге, или нажав кнопку возврата или клавишу Escape.
Соответствующий обработчик 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.9/qml-qtquick-dialogs-messagedialog.html