最近在做Linux的C++程序,用的是Qt控制台程序,突然间有了想法,为什么不做成向Redis启动那样的,B格也高点,就像这样的。
在此写了个实例,如下运行截图:
程序结构如下;
源码如下:
Banner.h
#ifndef BANNER_H
#define BANNER_H
class Banner
{
public:
Banner();
void printBar();
};
#endif // BANNER_H
ColorPrint.h
#ifndef COLORPRINT
#define COLORPRINT
#include <QMap>
#include <QString>
class ColorPrint{
public:
ColorPrint(){
this->m_colorMap.insert("@red@", "\033[31m");
this->m_colorMap.insert("@blue@", "\033[34m");
this->m_colorMap.insert("@green@", "\033[32m");
this->m_colorMap.insert("@over@", "\033[0m");
}
QString getColorString(const QString &str){
QString ret(str);
QList<QString> keyList = this->m_colorMap.keys();
for(int i = 0; i < keyList.size(); i++){
ret = ret.replace(keyList[i], this->m_colorMap.value(keyList[i]));
}
return ret;
}
private:
QMap<QString, QString> m_colorMap;
};
#endif // COLORPRINT
Banner.cpp
#include "Banner.h"
#include "ColorPrint.h"
#include <QFile>
#include <QDebug>
#include <QTextStream>
Banner::Banner()
{
}
void Banner::printBar()
{
QFile file(":/res/bar.txt");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)){
qDebug() << "open failed";
return;
}
QString all = file.readAll();
ColorPrint cp;
QString cpStr = cp.getColorString(all);
qDebug().noquote() << cpStr;
file.close();
}
main.cpp
#include "Banner.h"
#include "ColorPrint.h"
#include <QFile>
#include <QDebug>
#include <QTextStream>
Banner::Banner()
{
}
void Banner::printBar()
{
QFile file(":/res/bar.txt");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)){
qDebug() << "open failed";
return;
}
QString all = file.readAll();
ColorPrint cp;
QString cpStr = cp.getColorString(all);
qDebug().noquote() << cpStr;
file.close();
}
res/bar.txt
@green@ ________ _________@over@
@green@|\ __ \|\___ ___\@over@ @blue@Version: 5.5.1@over@
@green@\ \ \|\ \|___ \ \_|@over@ @red@BannerDemo : it1995@over@
@green@ \ \ \\\ \ \ \ \@over@
@green@ \ \ \\\ \ \ \ \@over@
@green@ \ \_____ \ \ \__\@over@
@green@ \|___| \__\ \|__|@over@
@green@ \|__|@over@
注意:这里我是准备了一个bar文件,然后用里面@green@这些字符串替换了linux的\033[32m,原因是,如果放原始的,那么QFile读取到QString后,这个\就会被转义,使用noquote无法解决,如果直接在QString中输入\033就不会出现这样的问题。并且个人感觉自定义规则,然后替换,可读性估计会更好。
如有更好的方法,希望大佬们留言指导下。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/qq78442761/article/details/121760716
内容来源于网络,如有侵权,请联系作者删除!