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_OBJECT

public:
    explicit RightBrowser(QWidget *parent = nullptr);
    QTextBrowser *tb;
    QTimer * timerTxt;


    int lastReadRowNums=0;//上次读到的文件行数,初始为0


signals:

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实现实时读取与显示动态更新的文本文件_第1张图片

Qt实现实时读取与显示动态更新的文本文件_第2张图片

Qt实现实时读取与显示动态更新的文本文件_第3张图片


 

完整项目代码获取:

https://download.csdn.net/download/vvyingning/10979809

你可能感兴趣的:(Qt)