Тип 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. Строка 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 |
Кнопка 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)
Этот сигнал испускается, когда пользователь нажал любую кнопку или клавишу, связанную с некоторым ролью (таким как клавиши 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.12/qml-qtquick-dialogs-dialog.html