Тип QML Dialog
Обёртка диалога QtQuick общего назначения со стандартными кнопками. Подробнее...
| Оператор импорта: | import QtQuick.Dialogs 1.3 |
| С: | Qt 5.3 |
Свойства
- clickedButton : StandardButton
- contentItem : QObject
- modality : Qt::WindowModality
- standardButtons : StandardButtons
- title : строка
- visible : bool
Сигналы
Методы
Подробное описание
Цель Dialog — обернуть произвольное содержимое в окно диалога, включая строку кнопок, настроенных для платформы.
Свойство contentItem является свойством по умолчанию (единственный разрешённый дочерний элемент), и элементы, объявленные внутри Dialog, фактически будут дочерними элементами другого элемента Item внутри contentItem. Строка standardButtons также будет находиться внутри 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. Вы можете управлять доступными кнопками, установив стандартные кнопки в комбинацию по принципу побитового ИЛИ следующих флагов:
| Константа | Описание |
|---|---|
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.
actionChosen(action)
Этот сигнал излучается, когда пользователь нажимает любую кнопку или клавишу, связанную с ролью (например, клавиши Enter или Escape). Параметр action содержит информацию об событии:
- StandardButton button — роль кнопки, которая была нажата. Если вместо этого была нажата клавиша, то это будет
StandardButton.Okесли принято иStandardButton.Cancelесли отклонено. - Qt.Key key — нажатая клавиша или
0если не нажата. - bool accepted — установите в
falseчтобы предотвратить срабатывание предварительно определённого действия.
Обработкой этого сигнала и установкой поля action.accepted в false можно реализовать проверку содержимого диалога перед его принятием, например.
Соответствующая обработчик — onActionChosen.
Этот сигнал был введён в QtQuick.Controls 1.8.
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.13/qml-qtquick-dialogs-dialog.html