Тип QML Dialog
Обёртка диалогового окна QtQuick общего назначения со стандартными кнопками. Подробнее...
| Оператор импорта: | import QtQuick.Dialogs 1.2 |
| С тех пор: | Qt 5.3 |
Свойства
- clickedButton : StandardButton
- contentItem : QObject
- modality : Qt::WindowModality
- standardButtons : StandardButtons
- title : строка
- visible : bool
Сигналы
Методы
Подробное описание
Диалоговое окно Dialog предназначено для обёртки произвольного содержимого в диалоговое окно, включая строку кнопок, адаптированных к платформе.
Свойство contentItem является свойством по умолчанию (единственный разрешённый дочерний элемент), и элементы, объявленные внутри Dialog, фактически будут дочерними элементами другого элемента Item внутри contentItem. Ряд стандартных кнопок также будет находиться внутри contentItem под объявленным содержимым, и Dialog будет пытаться настроить свой размер в соответствии с содержимым и кнопками.
В качестве альтернативы можно привязать contentItem к настраиваемому элементу Item, в этом случае не будет кнопок, отступов, и настраиваемое содержимое заполнит всё диалоговое окно. Это очень похоже на создание окна Window, за исключением того, что на платформах, не поддерживающих отображение нескольких окон, границы окна будут моделироваться, и оно будет отображаться в той же сцене.
Примечание: не пытайтесь привязать ширину или высоту диалогового окна к ширине или высоте его содержимого, так как Dialog уже пытается настроить свой размер в соответствии с содержимым. Если вашей целью является изменение или удаление отступов, необходимо переопределить contentItem. Если вашей целью является просто отображение окна (модального или немодального), и ваша платформа поддерживает это, проще использовать Window вместо этого.
Документация по свойствам
clickedButton : StandardButton
Это свойство содержит нажатую пользователем кнопку. Его значение — одно из флагов, заданных для свойства standardButtons.
contentItem : QObject
Объект QML, реализующий содержимое диалогового окна. Должен быть элементом Item.
Например, следующее диалоговое окно отобразит настраиваемое содержимое без кнопок:
import QtQuick 2.3
import QtQuick.Controls 1.2
import QtQuick.Dialogs 1.2
Dialog {
visible: true
title: "Blue sky dialog"
contentItem: Rectangle {
color: "lightskyblue"
implicitWidth: 400
implicitHeight: 100
Text {
text: "Hello blue sky!"
color: "navy"
anchors.centerIn: parent
}
}
} modality : Qt::WindowModality
Определяет, должно ли диалоговое окно отображаться в модальном режиме относительно окна, содержащего родительский элемент Item диалогового окна, в модальном режиме относительно всего приложения или в немодальном режиме.
По умолчанию это Qt.WindowModal.
Модальность не означает, что есть какие-либо блокирующие вызовы ожидания подтверждения или отклонения диалогового окна: она только означает, что пользователю будет запрещён доступ к родительскому окну или окнам приложения до закрытия диалогового окна.
standardButtons : StandardButtons
Диалоговое окно имеет ряд кнопок в нижней части, каждая из которых имеет 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. |
Например, следующее диалоговое окно покажет календарь с возможностью сохранения или отмены даты:
import QtQuick 2.3
import QtQuick.Controls 1.2
import QtQuick.Dialogs 1.2
Dialog {
id: dateDialog
visible: true
title: "Choose a date"
standardButtons: StandardButton.Save | StandardButton.Cancel
onAccepted: console.log("Saving the date " +
calendar.selectedDate.toLocaleDateString())
Calendar {
id: calendar
onDoubleClicked: dateDialog.click(StandardButton.Save)
}
} По умолчанию StandardButton.Ok.
Значения перечисления совпадают со значениями в QMessageBox::StandardButtons.
title : строка
Заголовок диалогового окна.
visible : bool
Это свойство определяет, видно ли диалоговое окно. По умолчанию это 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.9/qml-qtquick-dialogs-dialog.html