Qt之读文件使用QProgressBar显示进度
Published on 2022-06-20 17:09 in 分类: Qt with 萧海~
分类: Qt

Qt之读文件使用QProgressBar显示进度

    /***************.h文件***************/
    #ifndef WIDGET_H
    #define WIDGET_H
    #include <QWidget>
    using namespace std;
    namespace Ui {
    class Widget;
    }
    class Widget : public QWidget
    {
    Q_OBJECT
    public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();
    void readFile(QString fileName);
    public slots:
    void dealOpenFile();
    private:
    Ui::Widget *ui;
    QString m_filePath;
    int m_totalLength;
    };
    #endif // WIDGET_H
    /***************.cpp文件***************/
    #include "widget.h"
    #include "ui_widget.h"
    #include <QFileDialog>
    #include <QFile>
    #include <QTextStream>
    #include <QDebug>
    #include <QTextCodec>
    #include <string>
    Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
    {
    ui->setupUi(this);
    connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(dealOpenFile()));
    }
    Widget::~Widget()
    {
    delete ui;
    }
    // 函数名称:读文件
    // 作 者:ISMILE_LI
    void Widget::readFile(QString fileName)
    {
    QFile file(m_filePath);
    if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
    return;
    QTextStream out(&file);
    ui->progressBar->setRange(0,m_totalLength);
    QString readLines = "";
    while(!out.atEnd())
    {
    QString line = out.readLine();
    //中文乱码转换
    QTextCodec *codec = QTextCodec::codecForName("GBK");
    QTextCodec::setCodecForLocale(codec);
    QByteArray ba = line.toLocal8Bit();
    char* tempChar = ba.data();
    string tempFile = tempChar;
    QString tempLine = QString::fromStdString(tempFile);
    qDebug() << tempLine;
    ui->plainTextEdit->appendPlainText(tempLine);
    readLines = readLines + line;
    int readLineLen = readLines.length();
    ui->progressBar->setValue(readLineLen);
    }
    ui->progressBar->setValue(m_totalLength);// 不加这一句时,进度条达不到100%,没有找到原因
    }
    // 函数名称:读文件
    // 作 者:ISMILE_LI
    void Widget::dealOpenFile()
    {
    m_filePath = QFileDialog::getOpenFileName(this,tr("open file"),"../QScrollBarShowPrecent/",
    tr("files(*.cpp *.txt)"));
    QFile file(m_filePath);
    if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
    return;
    QTextStream out(&file);
    QString alltext = out.readAll();
    m_totalLength = alltext.length();
    readFile(m_filePath);
    }

    原文:https://blog.csdn.net/toby54king/article/details/78640571

    posted @   萧海~  阅读(446)  评论(0编辑  收藏  举报
    相关博文:
    阅读排行:
    · winform 绘制太阳,地球,月球 运作规律
    · AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
    · 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
    · 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
    · 上周热点回顾(3.3-3.9)
    点击右上角即可分享
    微信分享提示
    电磁波切换