reading.h
#ifndef READING_H
#define READING_H
#include <QThread>
class Reading : public QThread
{
Q_OBJECT
public:
Reading(QObject* parent = nullptr);
protected:
virtual void run() override;
signals:
void sigsend();
};
#endif // READING_H
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QString>
#include <QDebug>
#include <QFileDialog>
#include <QObject>
#include <QFile>
#include <QByteArray>
#include <QDebug>
#include <QThread>
#include "reading.h"
#include <QMessageBox>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
public slots:
int fileRead();
signals:
void readFile(QString &path);
private slots:
void on_pushButton_clicked();
void on_pushButton_2_clicked();
private:
Ui::Widget *ui;
Reading* t;
QFile file;
QString pthname;
int now_read;
int rangeMax;
};
#endif // WIDGET_H
reading.cpp
#include "reading.h"
Reading::Reading(QObject* parent)
:QThread(parent)
{
}
void Reading::run()
{
while(1){
emit sigsend();
this->msleep(100);
}
}
widget.cpp
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
now_read = 0;
ui->setupUi(this);
ui->horizontalSlider->setValue(0);
QString qss = "QSlider::sub-page:horizontal{background-color:rgb(0,255,255)}\
QSlider::groove:horizontal{background-color:lightGray}\
";
ui->horizontalSlider->setStyleSheet(qss);
t = new Reading(this);
QObject::connect(t,&Reading::sigsend,this ,&Widget::fileRead);
}
Widget::~Widget()
{
t->terminate();
delete ui;
}
int Widget::fileRead()
{
char data[1024];
now_read += file.read(data , 1024);
qDebug() <<"read"<<now_read<<" :size: "<<file.size();
ui->horizontalSlider->setValue(now_read);
if(now_read == file.size()){
t->terminate();
now_read = 0;
QMessageBox::information(this ,"文件" ,"文件读取完毕");
ui->horizontalSlider->setValue(0);
file.close();
}
}
void Widget::on_pushButton_clicked()
{
pthname = QFileDialog::getOpenFileName(this,"读取文件","F:/QT_TXT","txt(*.txt)");
}
void Widget::on_pushButton_2_clicked()
{
file.setFileName(pthname);
file.open(QFile::ReadOnly);
if(file.exists()==false){
qDebug() << "文件不存在";
return;
}
rangeMax =file.size();
ui->horizontalSlider->setRange(0,rangeMax);
t->start();
}