Тип QML диалога
Обертка 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. Строка стандартных кнопок также будет находиться внутри 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 |
Кнопка 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: OK, Открыть, Сохранить, Сохранить все, Повторить или Пропустить.
Соответствующий обработчик — onAccepted.
actionChosen(action)
Этот сигнал генерируется, когда пользователь нажал любую кнопку или клавишу, связанную с ролью (например, клавиши Ввод или Esc). Параметр 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.14/qml-qtquick-dialogs-dialog.html