读文件使用QProgressBar显示进度
零、小序
有人问读取文件时怎么使用进度条显示读取百分比,在此写了个小例子希望对初学者有一定的帮助,提供一个思路。
一、功能描述
功能描述:读取文件,使用QProgressBar显示读取进度,并把读取的文件显示在QPlainTextEdit上面。
二、效果演示
效果演示如下图:
三、代码示例
/***************.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); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
2021-05-12 有动画效果的 CheckBox
2021-05-12 Qt 交换Layout中的QWidget控件位置
2021-05-12 c++ 使用WinHTTP实现文件下载功能
2021-05-12 C++ 程序崩溃时生成Dump文件
2021-05-12 windows下qt程序崩溃后自动将程序拉起来
2021-05-12 VC 为静态控件添加事件
2021-05-12 [c++]TRACE 宏的利用