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实现实时读取与显示动态更新的文本文件】https://download.csdn.net/download/vvyingning/10979809
推荐阅读
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- MybatisPlus使用queryWrapper如何实现复杂查询
- python学习之|python学习之 实现QQ自动发送消息
- 孩子不是实现父母欲望的工具——林哈夫
- opencv|opencv C++模板匹配的简单实现
- Node.js中readline模块实现终端输入
- java中如何实现重建二叉树
- 人脸识别|【人脸识别系列】| 实现自动化妆
- paddle|动手从头实现LSTM
- pytorch|使用pytorch从头实现多层LSTM