QCircularProgress — это компонент из библиотеки Quasar, предназначенный для визуализации прогресса выполнения задач в виде круговой диаграммы. Он позволяет создавать как индикаторы с фиксированным прогрессом, так и бесконечные анимации загрузки. Основная идея заключается в отображении процента выполнения задачи с помощью заполненного кольца, что делает интерфейс визуально информативным и эстетически привлекательным.
value Определяет текущее значение
прогресса в процентах (от 0 до 100).
<q-circular-progress :value="75" />
В этом примере кольцо будет заполнено на 75%.
size Задает диаметр индикатора в
пикселях. По умолчанию используется 100.
<q-circular-progress :value="50" size="150" />thickness Определяет толщину
кольца. Значение по умолчанию — 10.
<q-circular-progress :value="60" thickness="15" />color и
track-color
color — цвет заполненной части прогресса.track-color — цвет фона кольца.<q-circular-progress :value="40" color="primary" track-color="grey-3" />indeterminate Устанавливает
бесконечный индикатор загрузки, когда прогресс неизвестен.
<q-circular-progress indeterminate color="secondary" />angle Определяет угол отображения
прогресса. По умолчанию — полный круг (360°), но можно ограничить до
270°, 180° и других значений.
<q-circular-progress :value="80" angle="270" />label и label-value
Позволяют отображать текст внутри кольца. Можно использовать
динамическое значение или произвольный текст.
<q-circular-progress :value="50" :label-value="progress + '%'" />primary, secondary,
accent, negative, positive) или
собственные цвета CSS.disable-animation.default можно вставлять произвольный контент внутрь
индикатора (например, иконки или текстовые метки).Пример с кастомным слотом:
<q-circular-progress :value="70" color="green" size="120">
<div class="text-h6">70%</div>
</q-circular-progress>
QCircularProgress удобно использовать в сочетании с реактивными данными Vue. Например, для отображения прогресса загрузки файла:
<template>
<q-circular-progress :value="uploadProgress" color="blue" size="120" />
</template>
<script>
export default {
data() {
return {
uploadProgress: 0
}
},
mounted() {
this.startUpload();
},
methods: {
startUpload() {
let progress = 0;
const interval = setInterval(() => {
progress += 5;
this.uploadProgress = progress;
if (progress >= 100) clearInterval(interval);
}, 200);
}
}
}
</script>
QCircularProgress можно интегрировать с QBtn, QCard, QDialog и другими компонентами для создания комплексных интерфейсов:
<q-btn color="primary" :loading="loading" label="Загрузить" @click="startUpload" />
<q-circular-progress v-if="loading" :value="uploadProgress" size="50" color="accent" />
<q-dialog v-model="dialog">
<q-card>
<q-card-section class="row justify-center">
<q-circular-progress :value="progress" size="100" color="positive" />
</q-card-section>
<q-card-actions align="right">
<q-btn flat label="Закрыть" v-close-popup />
</q-card-actions>
</q-card>
</q-dialog>
size и thickness для поддержания
читаемости.indeterminate для операций с
неопределенным временем завершения (загрузка данных с API).label с динамическим значением
label-value, чтобы отображать текущий прогресс внутри
кольца.QCircularProgress в Quasar предоставляет гибкую, визуально привлекательную систему круговых индикаторов, которая подходит как для простых счетчиков прогресса, так и для сложных интерфейсных решений с динамическими данными. Его богатые свойства и возможности стилизации позволяют создавать как статические, так и анимированные индикаторы любой сложности.