• 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

  • 相关阅读:
    poj 3613(经过N条边的最短路)
    poj 3328(多起点多终点的最短路)
    poj 3311(floyd+状态压缩)
    新CCIE笔记-IP网络基础
    新CCIE笔记-IP网络基础
    算法之【冒泡排序法】
    算法之【冒泡排序法】
    算法之【冒泡排序法】
    算法之【辗转相除法】
    算法之【辗转相除法】
  • 原文地址:https://www.cnblogs.com/xiaohai123/p/16393920.html
Copyright © 2020-2023  润新知