欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

QT进度条简单实现

程序员文章站 2022-05-28 20:17:39
...

某些场景需要用进度条并要对进度条快慢进行控制

话不多说,开始步骤:五步曲
下面有效果git图

第一步:往布局中拉一个Progress Bar 和 pushButton
QT进度条简单实现

第二步:右键pushButton按钮转到槽函数

第三步:直接上代码吧!! .h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTimer>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:
    void on_pushButton_clicked();
    void start();

private:
    Ui::MainWindow *ui;
    QTimer *qTimer;
    int tick =0;
};

#endif // MAINWINDOW_H

第四步:cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    ui->progressBar->setRange(0,100);
    ui->progressBar->setValue(0);
    ui->progressBar->setOrientation (Qt::Horizontal);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked() // 该函数为第二步的槽函数
{
    // 这里用qTimer来控制进度条
    qTimer = new QTimer();
    connect(this->qTimer, SIGNAL(timeout()), this, SLOT(start()));
    qTimer->start(50); // 50可以换成其他数值,越大进度条越慢,越小进度条越快
}
void MainWindow::start()
{
    if (tick < 101)
    {
        ui->progressBar->setValue(tick++);
    } else
    {
        tick = 1;
        disconnect(this->qTimer, SIGNAL(timeout()), this, SLOT(start())); // 若断开链接,进度条会一直重复
        ui->progressBar->reset(); // 进度条归零
    }
}

第五步:效果如下:

QT进度条简单实现

相关标签: QT qt c++