Spec-Zone.ru › Qt 5.13

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

Этот сигнал испускается, когда пользователь закрыл диалоговое окно, нажав кнопку Отмена, Закрыть или Прервать в диалоговом окне, или нажав кнопку назад или клавишу 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

Spec-Zone.ru

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