作者:大盗难过就哭_789 | 来源:互联网 | 2023-10-12 09:37
最近在做Linux的C++程序,用的是Qt控制台程序,突然间有了想法,为什么不做成向Redis启动那样的,B格也高点,就像这样的。
在此写了个实例,如下运行截图:
程序结构如下;
源码如下:
Banner.h
#ifndef BANNER_H
#define BANNER_Hclass Banner
{
public:Banner();void printBar();
};#endif // BANNER_H
ColorPrint.h
#ifndef COLORPRINT
#define COLORPRINT#include
#include 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 keyList = this->m_colorMap.keys();for(int i = 0; i m_colorMap.value(keyList[i]));}return ret;}private:QMap m_colorMap;
};#endif // COLORPRINT
Banner.cpp
#include "Banner.h"
#include "ColorPrint.h"
#include
#include
#include Banner::Banner()
{}void Banner::printBar()
{QFile file(":/res/bar.txt");if (!file.open(QIODevice::ReadOnly | QIODevice::Text)){qDebug() <<"open failed";return;}QString all &#61; file.readAll();ColorPrint cp;QString cpStr &#61; cp.getColorString(all);qDebug().noquote() <}
main.cpp
#include "Banner.h"
#include "ColorPrint.h"
#include
#include
#include Banner::Banner()
{}void Banner::printBar()
{QFile file(":/res/bar.txt");if (!file.open(QIODevice::ReadOnly | QIODevice::Text)){qDebug() <<"open failed";return;}QString all &#61; file.readAll();ColorPrint cp;QString cpStr &#61; cp.getColorString(all);qDebug().noquote() <}
res/bar.txt
&#64;green&#64; ________ _________&#64;over&#64;
&#64;green&#64;|\ __ \|\___ ___\&#64;over&#64; &#64;blue&#64;Version: 5.5.1&#64;over&#64;
&#64;green&#64;\ \ \|\ \|___ \ \_|&#64;over&#64; &#64;red&#64;BannerDemo : it1995&#64;over&#64;
&#64;green&#64; \ \ \\\ \ \ \ \&#64;over&#64;
&#64;green&#64; \ \ \\\ \ \ \ \&#64;over&#64;
&#64;green&#64; \ \_____ \ \ \__\&#64;over&#64;
&#64;green&#64; \|___| \__\ \|__|&#64;over&#64;
&#64;green&#64; \|__|&#64;over&#64;
注意&#xff1a;这里我是准备了一个bar文件&#xff0c;然后用里面&#64;green&#64;这些字符串替换了linux的\033[32m&#xff0c;原因是&#xff0c;如果放原始的&#xff0c;那么QFile读取到QString后&#xff0c;这个\就会被转义&#xff0c;使用noquote无法解决&#xff0c;如果直接在QString中输入\033就不会出现这样的问题。并且个人感觉自定义规则&#xff0c;然后替换&#xff0c;可读性估计会更好。
如有更好的方法&#xff0c;希望大佬们留言指导下。