Тип 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, диалог будет отображаться по центру над окном, содержащим элемент, или над окном 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()
Этот сигнал излучается, когда пользователь закрыл диалог, закрыв окно диалога, нажав кнопку Отмена, Закрыть или Прервать в диалоге, или нажав кнопку возврата или клавишу 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.14/qml-qtquick-dialogs-messagedialog.html