Qt进度条QProgressBar的使用

在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();
}
点击【开始】按钮,即可实现进度条的运行,效果如下




猜你喜欢

转载自blog.csdn.net/yao_hou/article/details/80179087