QML-тип Dialog

Страница, закрываемая действием подтверждения или отмены. Подробнее...

Строка импорта: import Sailfish.Silica 1.0
Наследуется от: Page
Наследники: ColorPickerDialog

Свойства

Сигналы

Методы

Подробное описание

Тип 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: "What's your name?"
             label: "Name"
         }
     }

     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: "Ask me"
                 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 = "My name: " + dialog.name
                     })
                 }
             }
         }
     }
 }

Выше, NameInputDialog реализует обработчик сигнала onDone, вызываемый при закрытии диалога, чтобы установить значение свойства name, если диалог принят. В main.qml нажатие кнопки вызывает PageStack::push() и открывает экземпляр диалоговой страницы "NameInputDialog" с указанным значением свойства name. Кроме того, сигнал accepted компонента Dialog, который означает, что диалог был принят пользователем, подключен к обновлению значения свойства displayedName.

Когда компонент 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()

Обработчик данного сигнала полезен для разработчиков диалоговых страниц. Он вызывается, когда открывается диалог. А также может использоваться, например, для заполнения начальных значений в диалоге.

См. также open() и onDone.

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.