QT 实现QMessageBox::about()信息自定义显示

这是我记录Qt学习过程的第四篇心得文章,主要是方便自己编写的应用程序显示“关于信息”,对QMessageBox::about()输入信息进行规范,可以设置应用程序名称,通过定义宏从pro文件获取应用程序版本号,以及编译程序的QT版本、编译的时间,同时自动根据不同编译环境显示关于信息。

实现代码:
#include "skysonya.h"

#include <sstream>

Skysonya::Skysonya(QObject *parent) : QObject{parent}
{
    appVersion = APP_VERSION;  //预定义宏APP_VERSION
    qtVersion = qVersion();
    buildTime = fun_buildTime();
}
Skysonya::~Skysonya() {}
//程序关于信息
QString Skysonya::doAppAbout(QString appName)
{
    QString aboutInfo =
        "<html>"
        "<span style='text-align: center; display: block;'><b style='font-size: 22px'>" +
        appName + "</b><br><br>版本:" + appVersion +
        "</span><br><br>"
        "基于 Qt " +
        qtVersion;
#if defined(_MSC_VER)
    aboutInfo += " (MSVC2019, 32 bit) 运行于 x86_64<br>";
#elif defined(__GNUC__)
    aboutInfo += " (MinGW_81, 64 bit) 运行于 x86_64<br>";
#endif
    aboutInfo += "构建时间:" + buildTime +
                 "<br>"
                 "版权所有 2024 @ 宇翔科技 石书义<br>"
                 "邮箱:<a href='mailto:1130226431@qq.com'>1130226431@qq.com</a><br>"
                 "网站:<a href='https://blog.csdn.net/skysonya_shisy'>https://blog.csdn.net/skysonya_shisy</a>"
                 "</html>";
    return aboutInfo;
}
//获取程序构建时间
QString Skysonya::fun_buildTime()
{
    std::ostringstream oss;
    oss << __DATE__ << " " << __TIME__;
    return QString::fromStdString(oss.str());
    // return QString("%1 %2").arg(__DATE__).arg(__TIME__); //C语言风格
}
具体使用

//文件
void MainWindow::slot_file_triggered()
{
	//关于
	QString strInfo = skysonya.doAppAbout(wTitle);
	QMessageBox::about(this, tr("关于") + wTitle, strInfo);
}
自定义类:
#ifndef SKYSONYA_H
#define SKYSONYA_H
#include <QDebug>
#include <QFile>
#include <QInputDialog>
#include <QMessageBox>
#include <QObject>
#include <QPushButton>
#include <QString>
#include <QTextCodec>

enum EncodingFormat
{
    ANSI,
    UTF16LE,
    UTF16BE,
    UTF8,
    UTF8BOM,
};

class Skysonya : public QObject
{
    Q_OBJECT
    Q_ENUM(EncodingFormat)
public:
    explicit Skysonya(QObject *parent = nullptr);
    ~Skysonya();
    QString doAppAbout(QString appName);                                               //程序关于信息
    bool messageBox(QString msgType, QString dlgTitle, QString strInfo);               //中文提示对话框
    QString inputDialog(QString dlgTitle, QString labelText, QString textValue = "");  //中文按钮文本输入对话框
    QTextCodec *getFileCharacterEncoding(const QString &fileName);                     //获取文件编码格式函数
    QString openFileByIOWhole(const QString &fileName);                 //用QFile打开文件,整体读取
    QString openFileByIOLines(const QString &fileName);                 //用QFile打开文件,逐行读取
    QString openFileByStreamWhole(const QString &fileName);             //用QTextStream读取文件,整体读取
    QString openFileByStreamLines(const QString &fileName);             //用QTextStream读取文件,逐行读取
    bool saveFileByIOWhole(const QString &fileName, QString text);      //用QFile保存文件,整体保存
    bool saveFileByStreamWhole(const QString &fileName, QString text);  //用QTextStream保存文件,整体保存

private:
    QString appVersion;       //软件版本号
    QString buildTime;        //程序构建时间
    QString qtVersion;        // QT版本号
    QString fun_buildTime();  //获取程序构建时间
};

#endif  // SKYSONYA_H

工程文件:

#表示项目使用的模板是app,是一般的应用程序。
TEMPLATE = app
#应用程序名称
TARGET = TestSonya2024
#应用程序版本
VERSION = 2024.10.8.1
# #APP_VERSION可在cpp中使用
DEFINES += APP_VERSION="\\\"$${VERSION}\\\""

完整的示例地址:https://download.csdn.net/download/skysonya_shisy/89861254

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木叶流丹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值