热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Qt笔记Linux程序控制台启动界面实例

最近在做Linux的C程序,用的是Qt控制台程序,突然间有了想法,为什么不做成向Redis启动那样的,B格也高点࿰

最近在做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;希望大佬们留言指导下。


推荐阅读
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • SmartRefreshLayout自定义头部刷新和底部加载
    1.添加依赖implementation‘com.scwang.smartrefresh:SmartRefreshLayout:1.0.3’implementation‘com.s ... [详细]
author-avatar
大盗难过就哭_789
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有