Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍ProgressBar
进度条组件的常用方法及灵活运用。
ProgressBar(进度条)是在Qt中常用的用户界面组件之一,用于显示任务的完成进度。它通常以一个水平或垂直的条形图形式展示,表示任务已完成的比例。进度条组件提供了一种直观的方式来显示任务的进度,让用户清晰地了解任务的完成情况。其还可根据需要在水平或垂直方向上显示,以适应不同的界面布局。
以下是QProgressBar
类的一些常用方法的说明和概述,以表格形式列出:
这些方法提供了对QProgressBar
进行配置、管理和与之交互的灵活性。你可以根据具体的应用需求使用这些方法,使QProgressBar
在你的Qt应用程序中按照期望的方式工作。
说到进度条组件就不得不提起定时器类,因为进度条组件往往需要配合定时器一起使用,QTimer是 Qt 中用于创建定时器的类,它允许你在一段时间间隔后执行特定的操作。以下是 QTimer
类的一些常用方法的说明和概述,以表格形式列出:
这些方法提供了对 QTimer
进行配置、管理和与之交互的灵活性。你可以根据具体的应用需求使用这些方法,使 QTimer
在你的 Qt 应用程序中按照期望的方式工作。
首先在MainWindow
主函数中通过connect
设置绑定定时器,并在匿名函数中对数值进行判断,如果到达了进度条最大值则直接使用my_timer->stop()
停止计时,否则每次设置进度条加一,代码如下所示;
#include <QTimer>
// 全局定时器变量指针
QTimer *my_timer;
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
// 声明定时器
my_timer = new QTimer(this);
// 绑定一个匿名函数
connect(my_timer,&QTimer::timeout,[=]{
static int x = 0;
// 判断是否到达了进度条的最大值
if(x != 100)
{
x++;
ui->progressBar_Up->setValue(x);
ui->progressBar_Down->setValue(int(100-x));
}
else
{
x=0;
my_timer->stop();
}
});
}
当用户点击初始化按钮时,我们首先将两个进度条使用reset()
属性进行重置,接着设置progressBar_Down
为最大值状态,代码如下所示;
// 初始化进度条
void MainWindow::on_pushButton_clear_clicked()
{
// 清空进度条
ui->progressBar_Up->reset();
ui->progressBar_Down->reset();
// 设置递减进度条最大值100
ui->progressBar_Down->setValue(100);
}
启动与停止定时器流程一致,首先通过my_timer->isActive()
来验证定时器是否启动中,日过不是则my_timer->start(100)
启动,如果是则my_timer->stop()
停止。
// 启动定时器,并设置周期为100毫秒
void MainWindow::on_pushButton_start_clicked()
{
if(my_timer->isActive() == false)
{
my_timer->start(100);
}
}
// 停止定时器
void MainWindow::on_pushButton_stop_clicked()
{
if(my_timer->isActive() == true)
{
my_timer->stop();
}
}
运行程序,首先点击初始化按钮设置进度条的状态值,然后读者可点击启动定时器和停止定时器,如下图所示;