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

Posted IT1995

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt笔记-Linux程序控制台启动界面实例相关的知识,希望对你有一定的参考价值。

最近在做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就不会出现这样的问题。并且个人感觉自定义规则,然后替换,可读性估计会更好。

如有更好的方法,希望大佬们留言指导下。

以上是关于Qt笔记-Linux程序控制台启动界面实例的主要内容,如果未能解决你的问题,请参考以下文章

Qt图形界面程序如何调用fortran编写的控制台程序?

qt1.1QT设计简单实例

Linux系统上用QT编写ARM9继电器控制程序的问题。 想写个QT界面程序到arm板子上,通过界面的按钮来控制继电

在linux系统上做的Qt界面怎么能开机运行

QT4 Linux GUI应用程序如何把所需要的QT库一起打包,使其能在没有装QT4的Linux平台上运行??

Qt系列文章之三十九(Qt多语言国际化程序实例设计实现)