1. 程式人生 > >Qt進度條QProgressBar的使用

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();
}
點選【開始】按鈕,即可實現進度條的執行,效果如下