Spec-Zone.ru › Qt 5.11

Тип 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

Сигналы

  • accepted()
  • apply()
  • discard()
  • help()
  • no()
  • rejected()
  • reset()
  • yes()

Методы

  • void close()
  • void open()

Подробное описание

Наиболее базовое применение 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 Для простого текстового предупреждения.
"Question icon" 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/archives/qt-5.11/qml-qtquick-dialogs-messagedialog.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API