这是我记录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