Тип QML Диалог
Обертка QtQuick для диалога общего назначения со стандартными кнопками. Подробнее...
| Оператор импорта: | import QtQuick.Dialogs 1.2 |
| С момента: | Qt 5.3 |
Свойства
- clickedButton : StandardButton
- contentItem : QObject
- modality : Qt::WindowModality
- standardButtons : StandardButtons
- title : строка
- visible : bool
Сигналы
Методы
Подробное описание
Цель Диалога — обернуть произвольное содержимое в окно диалога, включая строку кнопок, настроенных под платформу.
Свойство contentItem является свойством по умолчанию (единственный разрешенный дочерний элемент), и элементы, объявленные внутри Диалога, фактически будут дочерними элементами другого элемента Item внутри contentItem. Строка standardButtons также будет находиться внутри contentItem под объявленным содержимым, и диалог попытается изменить свой размер, чтобы поместить содержимое и кнопки.
В качестве альтернативы можно связать contentItem с пользовательским элементом Item, в этом случае кнопок, отступов не будет, и пользовательское содержимое заполнит весь диалог. Это очень похоже на создание окна Window, за исключением того, что на платформах, не поддерживающих отображение нескольких окон, границы окна будут смоделированы, и оно будет отображено в той же сцене.
Примечание: не пытайтесь связать ширину или высоту диалога с шириной или высотой его содержимого, так как диалог уже пытается изменить свой размер, чтобы поместиться в содержимое. Если ваша цель — изменить или удалить отступы, вы должны переопределить 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.
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/archives/qt-5.6/qml-qtquick-dialogs-dialog.html