55 lines
1.4 KiB
C++
55 lines
1.4 KiB
C++
#include "slogwidget.h"
|
|
#include <QCoreApplication>
|
|
#include <QString>
|
|
#include <QListWidget>
|
|
#include <QFile>
|
|
#include <QTextStream>
|
|
#include <QTime>
|
|
#include <QVBoxLayout>
|
|
|
|
SLogWidget::SLogWidget(QWidget *parent):QWidget(parent),
|
|
m_plwLog(new QListWidget(this)), m_pLayout(new QVBoxLayout(this))
|
|
{
|
|
m_pLayout->addWidget(m_plwLog);
|
|
setLayout(m_pLayout);
|
|
//m_plwLog->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
|
|
}
|
|
|
|
|
|
void SLogWidget::writeLog(const QString& _strLog)
|
|
{
|
|
QTime time = QTime::currentTime();
|
|
QString strOut = time.toString("[hh:mm:ss] ") + _strLog;
|
|
if(strOut.length() <= 1024)
|
|
m_plwLog->addItem(strOut);
|
|
else
|
|
m_plwLog->addItem(strOut.left(1024));
|
|
QDate date = QDate::currentDate();
|
|
|
|
QFile file(date.toString(Qt::ISODate)+ "_" + QString::number(QCoreApplication::applicationPid())+ ".log");
|
|
if (!file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append))
|
|
return;
|
|
|
|
QTextStream out(&file);
|
|
out << strOut << "\n";
|
|
file.close();
|
|
|
|
if (m_plwLog->count() > 512)
|
|
{
|
|
m_plwLog->removeItemWidget(m_plwLog->item(0));
|
|
QListWidgetItem* item = m_plwLog->takeItem(0);
|
|
delete item;
|
|
}
|
|
m_plwLog->setCurrentRow( m_plwLog->count() - 1 );
|
|
m_plwLog->repaint();
|
|
}
|
|
|
|
|
|
void SLogWidget::slotWriteLog(const QString& _strLog)
|
|
{
|
|
writeLog(_strLog);
|
|
}
|
|
|
|
|
|
|