您的位置:首页 > 汽车 > 时评 > 深圳问答营销_中国十大土木工程公司_百度图片搜索网页版_网站seo方案案例

深圳问答营销_中国十大土木工程公司_百度图片搜索网页版_网站seo方案案例

2024/12/28 11:51:01 来源:https://blog.csdn.net/hdfinder/article/details/143289316  浏览:    关键词:深圳问答营销_中国十大土木工程公司_百度图片搜索网页版_网站seo方案案例
深圳问答营销_中国十大土木工程公司_百度图片搜索网页版_网站seo方案案例

性能有待提高;
能够读取指定目录下的日志文件,显示在下拉框中。
选择某一个日志之后,点击获取数据按钮,能够实时刷新日志内容。
但是每次刷新都会对整个文件进行读取,文本框重新加载文本。效率很低,影响性能。

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QList>
#include<QDir>
#include<QTime>
#include<QDateTime>
#include<QDebug>
#include<QFile>
#include<QFileSystemWatcher>#define TIMEOUT 100
QT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);void getFileName(QString *path);void setTextBrowser(QString *path);//virtual void timerEvent(QTimerEvent *event);//int myTimerID;~Widget();
signals:void setFileSignal();
private slots:void on_readBtn_clicked();void on_stopBtn_clicked();void setFileSlot();//将文件名保存到List中void fileUpdated(const QString &path);   // 文件被修改时调用,path是监控的路径private:Ui::Widget *ui;QList<QString> filenames;QFileSystemWatcher fileSystemWatch;
};
#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QString floderPath = QDir::currentPath()+"/debug/14";getFileName(&floderPath);connect(this,&Widget::setFileSignal,this,&Widget::setFileSlot);//布置监视文本初始化fileSystemWatch.addPaths(filenames);//qDebug()<<floderPath;//fileSystemWatch.thread();connect(&fileSystemWatch, &QFileSystemWatcher::fileChanged, this,&Widget::fileUpdated);
}Widget::~Widget()
{delete ui;fileSystemWatch.removePaths(filenames);
}void Widget::getFileName(QString *path)
{QString  LogPath = *path;//文件夹路径QDir dir(LogPath);QStringList LogList;//向字符串列表添加文件类型,可以在此处添加过滤,只显示单日日志LogList << "*.log" ;QDateTime ct = QDateTime::currentDateTime();QDate dt = ct.date();//只看今天的//QString filterName = "*"+QString::number(dt.day())+".log";//LogList << "*" << QString::number(dt.day()) <<".log" ;//LogList.append(filterName);dir.setNameFilters(LogList);//获得文件夹下日志的名字int LogCount = dir.count();//获得dir里名字的个数,也表示文件夹下图片的个数/************获得文件名,对dir进行下标访问即可************/for (int i=0;i < LogCount;i++){QString LogName  = dir[i];ui->comboBox->addItem(LogName);filenames.append(QDir::currentPath()+"/debug/14/"+LogName);//qDebug() << LogName;//输出文件名}qDebug() << filenames;//将文件名设置到下拉框emit setFileSignal();
}void Widget::setTextBrowser(QString *filename){QString currrentfileName = QDir::currentPath()+"/debug/14/"+ui->comboBox->currentText();QFile file(currrentfileName);if(!file.isOpen()){file.open(QIODevice::ReadOnly);}file.flush();QByteArray ba = file.readAll();file.close();ui->textBrowser->setText(QString(ba));ui->textBrowser->reload();ui->textBrowser->moveCursor(QTextCursor::End);
}void Widget::on_readBtn_clicked()
{setTextBrowser(NULL);//打开定时器//myTimerID=this->startTimer(TIMEOUT);//QFileSystemWatcher::removePaths();//connect(this,&QFileSystemWatcher::fileChanged,this,&Widget::setTextBrowser);}
/*void Widget::timerEvent(QTimerEvent *event)
{if(event->timerId()!=myTimerID)return;setTextBrowser(NULL);
}*/void Widget::on_stopBtn_clicked()
{//this->killTimer(myTimerID);
}
//通过文件字符串列表,生成文件列表,且全部打开
void Widget::setFileSlot()
{foreach (QString filename, filenames) {QFile file(filename);qDebug()<<filename;}
}
void Widget::fileUpdated(const QString &path)
{if(path==QDir::currentPath()+"/debug/14/"+ui->comboBox->currentText()){setTextBrowser(NULL);}
}

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com