Skip to main content
Перейти к содержимому

Индикаторы выполнения и занятости

Информирование пользователей о состоянии загрузки с помощью индикаторов выполнения

Когда приложение выполняет действие, занимающее заметное время, следует использовать визуальный элемент, сообщающий пользователю о том, что в фоне что-то происходит.

QtQuick Controls предоставляет два полезных компонента, которые можно использовать для этого.

Индикатор выполнения

Controls.ProgressBar — компонент, позволяющий легко включить в приложение индикаторы выполнения. Потребуется использовать четыре основных свойства:

  • from: минимальное значение, соответствующее началу индикатора выполнения
  • to: максимальное значение, соответствующее концу индикатора выполнения
  • value: текущее значение выполняемого действия (например, загружено 50%)
  • indeterminate: если у выполняющегося в данный момент действия нет чёткого значения хода выполнения, этому свойству можно присвоить значение true, чтобы показать пользователю, что что-то происходит, но ход выполнения пока неясен (впрочем, скоро прояснится).
import QtQuick
import QtQuick.Layouts
import QtQuick.Controls as Controls
import org.kde.kirigami as Kirigami

Kirigami.ApplicationWindow {
    title: "Progressbar App"
    width: 400
    height: 400
    pageStack.initialPage: Kirigami.Page {
        ColumnLayout {
            anchors.left: parent.left
            anchors.right: parent.right
            Controls.ProgressBar {
                Layout.fillWidth: true
                from: 0
                to: 100
                value: 50
                indeterminate: false
            }
            Controls.ProgressBar {
                Layout.fillWidth: true
                from: 0
                to: 100
                // value: 50
                indeterminate: true
            }
        }
    }
}

Сверху: индикатор выполнения на 50 %; снизу: неопределённый индикатор выполнения

Сверху: индикатор выполнения на 50 %; снизу: неопределённый индикатор выполнения

Индикатор занятости

Если время загрузки невелико или измерить прогресс невозможно, можно вместо этого использовать Controls.BusyIndicator. Этот компонент предоставляет простой вращающийся индикатор, показывающий пользователю, что что-то происходит.

Чтобы остановить индикатор, задайте свойству running значение false, в этом случае .

import QtQuick
import QtQuick.Controls as Controls
import org.kde.kirigami as Kirigami

Kirigami.ApplicationWindow {
    title: "Progressbar App"
    width: 400
    height: 400
    pageStack.initialPage: Kirigami.Page {
        actions: [
            Kirigami.Action {
                text: "Toggle busy indicator"
                onTriggered: indicator.running ? indicator.running = false : indicator.running = true
            }
        ]
        Controls.BusyIndicator {
            id: indicator
            anchors.centerIn: parent
        }
    }
}