Qt实现实时读取与显示动态更新的文本文件

功能描述:
利用QFile读取在不断刷新的文本文件,并用QTextBrowser组件进行实时显示。
实现:
对于文本的实时显示主要利用定时器QTimer实现 ,每隔x秒则在QTextBrowser中“增量式”显示文本内容。“增量式”即与上次读到的文本相比,只在显示文本中不断增加文本中新增的内容。
代码示例:
mainwindow.h

#ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #include #include #include #include #include #include #include #include #include class RightBrowser : public QWidget { Q_OBJECTpublic: explicit RightBrowser(QWidget *parent = nullptr); QTextBrowser *tb; QTimer * timerTxt; int lastReadRowNums=0; //上次读到的文件行数,初始为0signals:public slots: void showFileContents(); };

mainwindow.cpp
#include "mainwindow.h"MainWindow::MainWindow(QWidget *parent):QMainWindow(parent) { timerTxt=new QTimer; tb=new QTextBrowser; } void MainWindow::showFileContents() { //读已经完全写好的结果文件,每隔3秒显示一行数据 QStringList sl; //右下文本框读内容,显示 QFile file(":/resultdata/result/data.txt"); if(!file.open(QFile::ReadOnly|QFile::Text)) qDebug()<<"canot open!"; QTextStream stream(&file); //初始时加上首行说明 if(lastReadRowNums==0){ qDebug()<<"初始lastReadRowNums:"<append("------------------------------------------------------------------"); }while(!stream.atEnd()){ QString line=stream.readLine(); if (line.startsWith("#") || line.startsWith("variables")) continue; sl.append(""+line.trimmed()); //trimmed():Returns a string that has whitespace removed from the start and the end. }int len=sl.size(); tb->append(sl.at(lastReadRowNums++)); qDebug()<<"lastReadRowNums"<len-1){//此处数目设置为所读文件的最大行数 qDebug()<<" stop timerTXT!"; timerTxt->stop(); } }

运行截图:
Qt实现实时读取与显示动态更新的文本文件
文章图片

Qt实现实时读取与显示动态更新的文本文件
文章图片

Qt实现实时读取与显示动态更新的文本文件
文章图片


完整项目代码获取:
【Qt实现实时读取与显示动态更新的文本文件】https://download.csdn.net/download/vvyingning/10979809

    推荐阅读