Документация
ОС Аврора 5.1.5

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: "Как вас зовут?"
            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()

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

См. также 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.

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.