在Qt设计器中画好以下界面
进入QProgressBar的声明,可以找到以下槽函数
查阅Qt Assistant,可以查看这些槽函数的说明,我简单进行讲解。
setRange():设置进度条范围,可以写到代码里,也可以在,Qt设计器中设置。例如我的程序如下:
ui.progressBar->setRange(0, 99);
setMinimum():设置最小值
setMaximum():设置最大值
setValue():设置进度条的位置
在构造函数中,设置进度条的初始位置
ui.progressBar->setValue(0);
本程序,在点击【开始】按钮后进度条开始走动,点击【停止】按钮进度条停止,该功能可以用定时器QTimer实现,进入到QTimer类的声明,有3个槽函数
publicQ_SLOTS:
void start(intmsec); //启动定时器,时间间隔是msec毫秒
void start();
void stop(); //停止定时器。
基本函数的使用就介绍到这,下面开始写代码。
项目名称:SliderDemo
头文件SliderDemo.h
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_SliderDemo.h"
#include <QTimer>
class SliderDemo : public QMainWindow
{
Q_OBJECT
public:
SliderDemo(QWidget *parent = Q_NULLPTR);
public slots:
void slotStart();
void slotStop();
void slotProcessBar();
private:
Ui::SliderDemoClass ui;
QTimer *m_timer;
};
实现文件SliderDemo.cpp
#include "SliderDemo.h"
SliderDemo::SliderDemo(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
m_timer = new QTimer(this);
ui.progressBar->setRange(0, 99);
ui.progressBar->setValue(0);
connect(ui.btn_Start, SIGNAL(clicked()), this, SLOT(slotStart()));
connect(ui.btn_Stop, SIGNAL(clicked()), this, SLOT(slotStop()));
//接收到timeout信号,定时器工作
connect(m_timer, SIGNAL(timeout()), this, SLOT(slotProcessBar()));
}
//控制进度条
void SliderDemo::slotProcessBar()
{
static int pos = 0;
if (pos == 100)
{
m_timer->stop();
return;
}
ui.progressBar->setValue(pos++);
}
//开启定时器
void SliderDemo::slotStart()
{
m_timer->start(100);
}
//关闭定时器
void SliderDemo::slotStop()
{
m_timer->stop();
}
点击【开始】按钮,即可实现进度条的运行,效果如下