QML-тип Dialog
Страница, закрываемая действием подтверждения или отмены. Подробнее…
Строка импорта: | import Sailfish.Silica 1.0 |
Наследуется от: | Page |
Наследники: | ColorPickerDialog |
Свойства
- acceptDestination : var
- acceptDestinationAction : enumeration
- acceptDestinationInstance : Page
- acceptDestinationProperties : var
- acceptDestinationReplaceTarget : Page
- acceptPending : bool
- canAccept : bool
- result : enumeration
- status : enumeration
Сигналы
- acceptBlocked()
- onAccepted()
- onDone()
- onOpened()
- onRejected()
Методы
Подробное описание
Тип Dialog
предоставляет контейнер для отображения диалоговой страницы.
Открытие диалога приводит к добавлению диалоговой страницы в начало PageStack. Компонент Dialog
реализует компонент Page с изменением внешнего вида и поведения интерфейса пользователя. Диалоги содержат
визуальные индикаторы в верхнем левом и правом верхнем углу. Пользователь может принять диалог, т. е. подтвердить
любые изменения пользователя или входные данные, и продолжить — переместив страницу справа налево или нажав на надпись
acceptText
в DialogHeader. И наоборот, пользователь может отклонить диалог, сигнализируя
об отмене действия, переместив страницу слева направо или нажав на надпись cancelText
в DialogHeader.
Ниже приведён пример простого диалога, определенного в NameInputDialog:
// NameInputDialog.qml
import QtQuick 2.2
import Sailfish.Silica 1.0
Dialog {
property string name
Column {
width: parent.width
DialogHeader { }
TextField {
id: nameField
width: parent.width
placeholderText: "Как вас зовут?"
label: "Имя"
}
}
onDone: {
if (result == DialogResult.Accepted) {
name = nameField.text
}
}
}
Пример простого приложения, которое загружает экземпляр данного диалога:
import QtQuick 2.2
import Sailfish.Silica 1.0
ApplicationWindow {
initialPage: Component {
Page {
PageHeader { id: header }
Button {
text: "Спроси меня"
anchors {
top: header.bottom
horizontalCenter: parent.horizontalCenter
}
onClicked: {
var dialog = pageStack.push(Qt.resolvedUrl("NameInputDialog.qml"),
{"name": header.title})
dialog.accepted.connect(function() {
header.title = "Моё имя: " + dialog.name
})
}
}
}
}
}
Выше, NameInputDialog
реализует обработчик сигнала onDone, вызываемый при закрытии
диалога, чтобы установить значение свойства name
, если диалог принят. В main.qml
нажатие кнопки вызывает
PageStack::push() и открывает экземпляр диалоговой страницы "NameInputDialog" с указанным
значением свойства name
. Кроме того, сигнал accepted компонента Dialog
, который
означает, что диалог был принят пользователем, подключён к обновлению значения свойства header.title
.
Когда компонент Dialog
принимается, вызывается обработчик сигнала onAccepted
и свойство result устанавливается в значение DialogResult.Accepted
. При отклонении диалога
вызывается обработчик сигнала onRejected и свойство result
устанавливается в значение DialogResult.Rejected
. Диалог также может быть принят или отклонен программно с помощью
методов accept() и reject(). Кроме того, метод
close() позволяет закрыть диалог без принятия или отклонения.
DialogHeader следует использовать для предоставления стандартных индикаторов в верхней части диалоговой страницы.
Описание свойств
acceptDestination : var
Может использоваться для указания целевой страницы, которая устанавливается как вершина стека страниц, когда диалог принят. Если данное свойство задано, то стек страниц не будет визуально возвращаться на страницу, с которой был вызван диалог, что произойдет, если вручную помещать страницу в стек в обработчике onAccepted.
Данное свойство может принимать значение одного из следующих типов:
- объект
Item
; - объект Component;
- URL компонента Page (например, "MyPage.qml");
- URI или диалог
Sailfish.Silica
(например, "Sailfish.Silica.TimePickerDialog").
Свойство acceptDestinationAction определяет, какое из действий навигации будет выполнено при принятии диалога.
См. также acceptDestinationProperties, acceptDestinationAction и PageStack::push.
acceptDestinationAction : enumeration
Когда для диалога задано свойство acceptDestination, свойство
acceptDestinationAction
может быть использовано для указания действия, которое следует предпринять в случае принятия
диалога.
Данное свойство должно принимать одно из значений:
PageStackAction.Push
— целевая страница будет помещена в стек;PageStackAction.Replace
— целевая страница будет заменена на страницу, которая была первоначально в вершине стека;PageStackAction.Pop
— все страницы над целевой страницей будут удалены из стека.
Если установлено значение PageStackAction.Pop
, свойство acceptDestination должно
ссылаться на страницу, которая уже присутствует в стеке страниц.
Действием по умолчанию является PageStackAction.Push
.
См. также acceptDestination.
acceptDestinationInstance : Page
Если для диалога задано свойство acceptDestination, то с помощью свойства
acceptDestinationInstance
можно получить доступ к объекту страницы, создаваемой после принятия диалога.
См. также acceptDestination и acceptPending.
acceptDestinationProperties : var
Если для диалога задано свойство acceptDestination, то с помощью свойства
acceptDestinationProperties
можно получить доступ ко всем дополнительным свойствам страницы, создаваемой после
принятия диалога.
Страница, указанная в свойстве acceptDestination, создается сразу же после
открытия диалога. Поэтому к значениям в свойстве acceptDestinationProperties
можно обратиться еще до принятия диалога.
Проверяя значение свойства acceptPending, можно реагировать на начало принятия диалога
пользователем.
См. также acceptDestination, acceptDestinationInstance и acceptPending.
acceptDestinationReplaceTarget : Page
Когда свойство acceptDestinationAction принимает значение
PageStackAction.Replace
, свойство acceptDestinationReplaceTarget
можно дополнительно настроить для управления
страницами, которые нужно заменить, когда диалог будет принят.
Если свойство acceptDestinationReplaceTarget
указывает на страницу, находящуюся в данный момент в стеке, то принятие
диалога приведет к этой странице, а все страницы, находящиеся выше, будут удалены из стека.
Если свойство acceptDestinationReplaceTarget
принимает значение null
, то при принятии диалога будут удалены все
страницы, находящиеся в данный момент в стеке путем их замены целевой страницей.
См. также acceptDestination, acceptDestinationAction и PageStack::replaceAbove().
acceptPending : bool
Истинно, когда пользователем выполняется действие (например, жест), по завершению которого диалог будет принят.
canAccept : bool
Устанавливает, может ли пользователь принять диалог в его текущем состоянии или нет. Если свойство canAccept
принимает
значение false
, то диалог не будет реагировать на попытки принять содержимое.
См. также accept().
result : enumeration
Предоставляет результат закрытия диалога. Данное свойство может принимать одно из значений:
DialogResult.Accepted
— диалог был принят пользователем или вызовом метода accept();DialogResult.Rejected
— диалог был отклонён пользователем или вызовом метода reject();DialogResult.None
— диалог был закрыт без принятия или отклонения, например, вызовом метода close().
status : enumeration
Предоставляет текущее состояние диалога. Данное свойство может принимать одно из значений:
DialogStatus.Closed
— диалог не активен и не отображается;DialogStatus.Opening
— диалог переходит в состояниеOpened
;DialogStatus.Opened
— диалог активен;DialogStatus.Closing
— диалог переходит в состояниеClosed
.
См. также result.
Описание сигналов
acceptBlocked()
Обработчик данного сигнала вызывается при попытке принятия диалога, в то время как свойство
canAccept установлено в значение false
.
onAccepted()
Обработчик данного сигнала вызывается, когда диалог принят.
Диалог принимается, если пользователь нажимает на надпись acceptText
в DialogHeader или
сдвигает диалоговую страницу справа налево, или если вызывается метод accept().
onDone()
Обработчик данного сигнала полезен для разработчиков диалоговых страниц. Вызывается, когда диалог близится к завершению, до вызова обработчиков onAccepted и onRejected.
См. также onOpened, onAccepted и onRejected.
onOpened()
Обработчик данного сигнала полезен для разработчиков диалоговых страниц. Он вызывается, когда открывается диалог. А также может использоваться, например, для заполнения начальных значений в диалоге.
onRejected()
Обработчик данного сигнала вызывается, когда диалог отклонён.
Диалог отклоняется, если пользователь нажимает верхний левый cancelText
в DialogHeader или
сдвигает диалоговую страницу слева направо, или если вызывается метод reject().
Описание методов
accept()
Устанавливает свойство result в значение DialogResult.Accepted
и закрывает диалог, удаляя
его из PageStack приложения.
См. также onAccepted и canAccept.
close()
Закрывает диалог без изменения свойства result и удаляет его из PageStack приложения.
open(replace, immediate)
Отображает диалог, добавив его сверху в PageStack приложения.
По умолчанию диалог добавляется через анимированный переход. Эту анимацию можно отключить, указав параметр immediate
как true
. Чтобы заменить находящуюся в вершине стека страницу на диалог, следует задать параметр replace как true
.
См. также onOpened, PageStack::push() и PageStack::replace().
reject()
Устанавливает свойство result в значение DialogResult.Rejected
и закрывает диалог, удаляя
его из PageStack приложения.
См. также onRejected.