欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > 通过QT实现进度条随着读取文件增加

通过QT实现进度条随着读取文件增加

2024/12/22 2:33:24 来源:https://blog.csdn.net/qq_57195726/article/details/144276179  浏览:    关键词:通过QT实现进度条随着读取文件增加

mythread循环给主线程发送信号实现主线程循环的功能

widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QFile>
#include <QFileDialog>
#include <QTextStream>
#include <QByteArray>
#include "mythread.h"QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void on_pushButton_clicked();void slider_move();private:QFile* fp;mythread* t;int i=0;Ui::Widget *ui;
};
#endif // WIDGET_H

mythread.h

#ifndef MYTHREAD_H
#define MYTHREAD_H#include <QThread>class mythread : public QThread
{Q_OBJECT
public:mythread(QObject *parent = nullptr);
signals:void sndsig();
protected:virtual void run() override;};#endif // MYTHREAD_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);fp = new QFile(this);t = new mythread(this);QObject::connect(t,&mythread::sndsig,this,&Widget::slider_move);QString qss = "QSlider::sub-page{background-color:rgba(0, 255, 0, 100)} QSlider::groove{background-color:lightGray}";ui->hsl->setStyleSheet(qss);
}Widget::~Widget()
{t->terminate();delete ui;
}void Widget::on_pushButton_clicked()
{QString file = QFileDialog::getOpenFileName(this,"閫夋嫨鏂囦欢");fp->setFileName(file);fp->open(QIODevice::ReadOnly);t->start();
}void Widget::slider_move()
{int len = fp->size();QByteArray text =  fp->read(1024);QString txt = QString::fromLocal8Bit(text);ui->lineEdit->setText(txt);ui->hsl->setRange(0,len);ui->hsl->setValue(i+=1024);if(fp->atEnd() == true){fp->close();t->terminate();}
}

mythred.cpp

#include "mythread.h"mythread::mythread(QObject *parent):QThread(parent)
{}void mythread::run()
{while (1) {emit sndsig();QThread::msleep(100);}}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com