QT开发中文网

qt写一个进度条类,进度条的参数数据自己给定,每过一秒刷新一次进度条

以下是一个简单的进度条类,使用Qt的QTimer类定时刷新进度条:

#include <QWidget>
#include <QProgressBar>
#include <QTimer>

class ProgressBar : public QWidget
{
    Q_OBJECT

public:
    ProgressBar(QWidget *parent = nullptr)
        : QWidget(parent), m_value(0)
    {
        m_progressBar = new QProgressBar(this);
        m_progressBar->setRange(0, 100);

        QTimer *timer = new QTimer(this);
        connect(timer, &QTimer::timeout, this, &ProgressBar::updateProgressBar);
        timer->start(1000); // 每1秒刷新一次进度条
    }

public slots:
    // 设置进度条当前值
    void setValue(int value)
    {
        m_value = value;
        update(); // 刷新界面
    }

private slots:
    // 更新进度条
    void updateProgressBar()
    {
        if (m_value >= 100) {
            m_value = 0; // 进度已满,重置为0
        } else {
            m_value += 10; // 每次增加10
        }
        setValue(m_value);
    }

protected:
    // 绘制进度条
    void paintEvent(QPaintEvent *event)
    {
        QPainter painter(this);
        painter.setRenderHint(QPainter::Antialiasing);

        int width = this->width();
        int height = this->height();

        QRectF rect(0, 0, width, height);
        painter.drawRect(rect.adjusted(0, 0, -1, -1));

        QRectF progressRect(1, 1, (width - 2) * m_value / 100.0, height - 2);
        painter.fillRect(progressRect, Qt::blue);
    }

private:
    QProgressBar *m_progressBar;
    int m_value;
};

使用方法:

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    ProgressBar progressBar;
    progressBar.show();

    return app.exec();
}

可以通过setValue()函数设置进度条当前值,也可以通过updateProgressBar()函数定时更新进度条。在paintEvent()函数中绘制进度条的背景和前景。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=743

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?