爱客crm客户管理系统,佛山seo培训,wordpress自定义文章添加标签,手机搜索网站建设在上位机系统中#xff0c;经常需要显示当前软件版本#xff0c;当前fpga版本#xff0c;那么咱就做一个help的菜单的关于界面
解决的问题#xff1a;
解决显示版本信息的UI
Axure界面图#xff1a; 如何实现#xff1a;
实现文件的存储#xff1a;QSetting来存储版…在上位机系统中经常需要显示当前软件版本当前fpga版本那么咱就做一个help的菜单的关于界面
解决的问题
解决显示版本信息的UI
Axure界面图 如何实现
实现文件的存储QSetting来存储版本信息文件详细看代码
UI的实现图 代码块解析
.h文件
/*********************************************************************************
*Author:zhouFuLiang
*Date: 2024-04-20 16:46
*Description: 显示关于信息
**********************************************************************************/
#ifndef DEABOUTUI_H
#define DEABOUTUI_H#include QDialog
#include QLabel// 数据结构用于存储版本信息
struct VersionInfo {QString appVersion;QString installDate;QString content;QString fpgaVersion;QString fpgaInstDate;QString fpgaContent;
};class DeAboutUi : public QDialog
{Q_OBJECT
public:explicit DeAboutUi(QWidget *parent 0);void writeFpgaVesion(int iValue);void writeFpgaInstallDate(int iValue);signals:public slots:private:void initConnect();void initGeometry();/** brief 将整数转换为日期时间* param intValue 如2022* param* return 返回对应的QString*/QString intToDateString(int intValue);void writeDefaultVersionInfo();VersionInfo readVersionInfo();/** brief 更新版本信息的UI* param* param* return*/void notifyVersionUi();
private:QLabel *m_pSoftVer;QLabel *m_pSoftData;QLabel *m_pSoftContent;QLabel *m_pFpgaVer;QLabel *m_pFpgaData;QLabel *m_pFpgaContent;QFrame *pVLine1;QFrame *pVLine2;QString m_sysVesPath;
};#endif // DEABOUTUI_H.cpp文件
#include deabout_ui.h
#include QVBoxLayout
#include QGridLayout
#include public.hDeAboutUi::DeAboutUi(QWidget *parent) : QDialog(parent)
{this-resize(350,250);this-setWindowTitle(QString::fromLocal8Bit(关于));m_pSoftVer new QLabel(this);m_pSoftData new QLabel(this);m_pSoftContent new QLabel(this);m_pFpgaVer new QLabel(this);m_pFpgaData new QLabel(this);m_pFpgaContent new QLabel(this);pVLine1 new QFrame(this);pVLine1-setFrameStyle(QFrame::HLine | QFrame::Plain);pVLine1-setLineWidth(2);pVLine1-setStyleSheet(color: black);pVLine2 new QFrame(this);pVLine2-setFrameStyle(QFrame::HLine | QFrame::Plain);pVLine2-setLineWidth(2);pVLine2-setStyleSheet(color: black);initGeometry();initConnect();m_sysVesPath qApp-applicationDirPath() / AppDoc/SystemIni/ version.ini;// 检查配置文件是否存在QFileInfo configFile(m_sysVesPath);if (!configFile.exists()) {// 如果配置文件不存在则写入默认版本信息writeDefaultVersionInfo();}// 读取版本信息notifyVersionUi();writeFpgaInstallDate(20210212);}void DeAboutUi::writeFpgaVesion(int iValue)
{QString fpgaVersion QString::number(iValue);// 创建QSettings对象并指定INI文件路径QSettings settings(m_sysVesPath, QSettings::IniFormat);// 写入版本信息到INI文件settings.beginGroup(FPGAVersion);settings.setValue(FpgaVersion, fpgaVersion);settings.endGroup();notifyVersionUi();
}void DeAboutUi::writeFpgaInstallDate(int iValue)
{QString fpgaDate intToDateString(iValue);// 创建QSettings对象并指定INI文件路径QSettings settings(m_sysVesPath, QSettings::IniFormat);// 写入版本信息到INI文件settings.beginGroup(FPGAVersion);settings.setValue(FpgaDate, fpgaDate);settings.endGroup();notifyVersionUi();
}void DeAboutUi::initConnect()
{}void DeAboutUi::initGeometry()
{QFont font;font.setBold(true);font.setFamily(Microsoft JhengHei);QVBoxLayout *layout new QVBoxLayout;QLabel *sLabey new QLabel(QString::fromLocal8Bit(软件版本:), this);sLabey-setFont(font);layout-addWidget(sLabey, Qt::AlignLeft | Qt::AlignBottom);QGridLayout *glayout1 new QGridLayout;glayout1-addWidget(new QLabel(QString::fromLocal8Bit(版本号:), this),0, 0, 1, 1,Qt::AlignLeft | Qt::AlignHCenter);glayout1-addWidget(m_pSoftVer,0, 1, 1, 1,Qt::AlignLeft | Qt::AlignHCenter);glayout1-addWidget(new QLabel(QString::fromLocal8Bit(日期:), this),1, 0, 1, 1,Qt::AlignLeft | Qt::AlignHCenter);glayout1-addWidget(m_pSoftData,1, 1, 1, 1,Qt::AlignLeft | Qt::AlignHCenter);glayout1-addWidget(new QLabel(QString::fromLocal8Bit(内容:), this),2, 0, 1, 1,Qt::AlignLeft | Qt::AlignHCenter);glayout1-addWidget(m_pSoftContent,2, 1, 1, 1,Qt::AlignLeft | Qt::AlignHCenter);QGridLayout *glayout2 new QGridLayout;glayout2-addWidget(new QLabel(QString::fromLocal8Bit(版本号:), this),0, 0, 1, 1,Qt::AlignLeft | Qt::AlignHCenter);glayout2-addWidget(m_pFpgaVer,0, 1, 1, 1,Qt::AlignLeft | Qt::AlignHCenter);glayout2-addWidget(new QLabel(QString::fromLocal8Bit(日期:), this),1, 0, 1, 1,Qt::AlignLeft | Qt::AlignHCenter);glayout2-addWidget(m_pFpgaData,1, 1, 1, 1,Qt::AlignLeft | Qt::AlignHCenter);glayout2-addWidget(new QLabel(QString::fromLocal8Bit(内容:), this),2, 0, 1, 1,Qt::AlignLeft | Qt::AlignHCenter);glayout2-addWidget(m_pFpgaContent,2, 1, 1, 1,Qt::AlignLeft | Qt::AlignHCenter);layout-addWidget(pVLine1, 2, Qt::AlignTop);layout-addLayout(glayout1);QLabel *fLabey new QLabel(QString::fromLocal8Bit(FPGA版本:), this);fLabey-setFont(font);layout-addWidget(fLabey, Qt::AlignLeft | Qt::AlignBottom);layout-addWidget(pVLine2, 0, Qt::AlignTop);layout-addLayout(glayout2);this-setLayout(layout);
}QString DeAboutUi::intToDateString(int intValue)
{// 解析年、月、日int year intValue / 10000; // 获取年份int month (intValue / 100) % 100; // 获取月份int day intValue % 100; // 获取日// 构建QDateTime对象QDateTime dateTime(QDate(year, month, day));// 将QDateTime对象格式化为字符串return dateTime.toString(yyyy-MM-dd); // 根据需要选择日期格式
}void DeAboutUi::writeDefaultVersionInfo()
{// 创建QSettings对象并指定INI文件路径QSettings settings(m_sysVesPath, QSettings::IniFormat);// 写入默认版本信息到INI文件settings.beginGroup(APPVersion);settings.setValue(AppVersion, QString(%1).arg(FORMAL_VERSION_NUMBER));settings.setValue(AppDate, 2024-04-20);settings.setValue(AppContent, strContent);settings.endGroup();settings.beginGroup(FPGAVersion);settings.setValue(FpgaVersion, QString(%1).arg(FORMAL_VERSION_NUMBER));settings.setValue(FpgaDate, 2024-04-20);settings.setValue(FpgaContent, strContent);settings.endGroup();qDebug() Default version information has been written to config.ini;
}VersionInfo DeAboutUi::readVersionInfo()
{// 创建QSettings对象并指定INI文件路径QSettings settings(m_sysVesPath, QSettings::IniFormat);// 读取版本信息VersionInfo info;settings.beginGroup(APPVersion);info.appVersion settings.value(AppVersion).toString();info.installDate settings.value(AppDate).toString();info.content settings.value(AppContent).toString();settings.endGroup();settings.beginGroup(FPGAVersion);info.fpgaVersion settings.value(FpgaVersion).toString();info.fpgaInstDate settings.value(FpgaDate).toString();info.fpgaContent settings.value(FpgaContent).toString();settings.endGroup();return info;
}void DeAboutUi::notifyVersionUi()
{VersionInfo vers readVersionInfo();m_pSoftVer-setText(QString(V%1).arg(vers.appVersion));m_pSoftData-setText(QString(%1).arg(vers.installDate));m_pSoftContent-setText(QString(%1).arg(vers.content));m_pFpgaVer-setText(QString(%1).arg(vers.fpgaVersion));m_pFpgaData-setText(QString(%1).arg(vers.fpgaInstDate));m_pFpgaContent-setText(QString(%1).arg(vers.fpgaContent));
}其中有两点fpga推给上位机的数据是一个int类型的如 int date 20210212需要转换
还有QSetting的用法是为了单独去改变其中的一个值写入文件后期读取如果FPga有推送版本就更新对应的值然后用UI的update函数来更新UI的改变。