CWidegt.h
#ifndef CWIDGET_H
#define CWIDGET_H
#include <QWidget>
#include <QTextEdit>
#include <memory>
// 日志
class COutLog : public QObject
{
Q_OBJECT
public:
static COutLog* mopGetInstance() { return mopInstance.get(); }
virtual ~COutLog() {}
void mvError(const QString& sMsg) { emit msigError(sMsg); }
void mvWarn(const QString& sMsg) { emit msigWarn(sMsg); }
void mvInfo(const QString& sMsg) { emit msigInfo(sMsg); }
signals:
void msigError(const QString& sMsg);
void msigWarn(const QString& sMsg);
void msigInfo(const QString& sMsg);
private:
COutLog() {}
private:
static std::shared_ptr<COutLog> mopInstance;
};
#define qLogger COutLog::mopGetInstance()
// 界面
class CWidget : public QWidget
{
Q_OBJECT
public:
CWidget(QWidget *parent = nullptr);
virtual ~CWidget() {}
private slots:
void mslotError(const QString& sMsg);
void mslotWarn(const QString& sMsg);
void mslotInfo(const QString& sMsg);
private:
QTextEdit* mopTetOut = nullptr;
};
#endif // CWIDGET_H
CWidegt.cpp
#include "CWidget.h"
#include <QLayout>
#include <QLabel>
std::shared_ptr<COutLog> COutLog::mopInstance(new COutLog);
CWidget::CWidget(QWidget *parent) : QWidget(parent)
{
resize(400, 400);
mopTetOut = new QTextEdit;
connect(qLogger, &COutLog::msigError, this, &CWidget::mslotError);
connect(qLogger, &COutLog::msigWarn, this, &CWidget::mslotWarn);
connect(qLogger, &COutLog::msigInfo, this, &CWidget::mslotInfo);
QGridLayout* op_main_layout = new QGridLayout(this);
op_main_layout->addWidget(new QLabel("Output Message:"), 0, 0, 1, 1);
op_main_layout->addWidget(mopTetOut, 1, 0, 5, 5);
qLogger->mvInfo("output info...");
qLogger->mvWarn("output warn...");
qLogger->mvError("output error...");
}
void CWidget::mslotError(const QString& sMsg)
{
mopTetOut->setTextColor(Qt::red);
mopTetOut->append(sMsg);
}
void CWidget::mslotWarn(const QString& sMsg)
{
mopTetOut->setTextColor(Qt::blue);
mopTetOut->append(sMsg);
}
void CWidget::mslotInfo(const QString& sMsg)
{
mopTetOut->setTextColor(Qt::black);
mopTetOut->append(sMsg);
}