Qt做关于界面

这篇具有很好参考价值的文章主要介绍了Qt做关于界面。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在上位机系统中,经常需要显示当前软件版本,当前fpga版本,那么咱就做一个help的菜单的关于界面

解决的问题:

解决显示版本信息的UI

Axure界面图:

Qt做关于界面,qt,开发语言


如何实现:

实现文件的存储:QSetting来存储版本信息文件,详细看代码

UI的实现图:

Qt做关于界面,qt,开发语言


代码块解析:

.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.h"

DeAboutUi::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的改变。文章来源地址https://www.toymoban.com/news/detail-857964.html

到了这里,关于Qt做关于界面的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关于图形界面Pyqt与QT的区别选择

            关于图像界面(GUI)想必大家都并不陌生,想要将一段已经完善的功能列表进行可视化操作并且具有一定的操作空间,将功能可视化必不可少,一个好的可视化工具不仅可以集成一系列小的文件功能,还能将不同方法之间的调用联系起来,形成良好的系统整理功能。

    2023年04月13日
    浏览(82)
  • QT界面开发杂记(五)

    QString转char* c_str()没有‘\\0’结尾可能导致一些错误可以使用以下方法解决: QString xmlPath = \\\"path\\\"; const char cXmlName[1024] = {0}; memcpy((void*)cXmlName,xmlPath.toStdString().c_str(),xmlPath.size()); char*转QString  

    2024年02月04日
    浏览(68)
  • 使用Qt开发一个登录界面

    在许多应用程序中,我们需要提供一个登录界面来让用户输入用户名和密码,并验证其身份。在本文中,我们将介绍如何使用Qt创建一个简单的登录界面,并演示如何获取用户输入和执行身份验证操作。 首先,我们需要创建一个QWidget部件,并设置其布局为垂直布局。然后,我

    2024年02月13日
    浏览(39)
  • 【Qt设计开发】GUI界面设计开发

      本文是我在学习QT的GUI界面设计过程当中的心得和学习笔记,在学习时已经有C, C++,Python的基础。文章附上了学习的代码,仅供大家参考。如果有问题,有错误欢迎大家留言。此外,博主还有另外几篇文章,分别关于 Python基础知识 、 Python的具体应用 、 C语言指针结构体

    2024年02月02日
    浏览(51)
  • qt图形化界面开发DAY4

    2024年01月23日
    浏览(34)
  • 界面开发框架Qt - 组合小部件映射器示例

    Qt 是目前最先进、最完整的跨平台C++开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。 Combo Widget Mapper(组合小部件映射器)示例展示了如何

    2023年04月14日
    浏览(46)
  • 【QT开发专题-天气预报】16.更新 UI 界面

    本专栏将会在未来 4 个月内,完成以下几个 Qt 项目: 《天气预报》 《文本编辑器》 《俄罗斯方块》 《绘图板》 《网络聊天室》 《串口助手》 完成时间预计在 2022-12-31 ,文章数目在 50 篇左右,更新完毕之后,价格恢复到 ¥299 专栏优势: 每个项目都是从零新建工程开始

    2023年04月08日
    浏览(66)
  • YOLOv5+QT5界面应用开发

    YOLOv5+QT5的UI界面开发 最终界面图: 本文章基于python3.7的Annaconda中虚拟环境开发: 1.1 配置YOLOv5环境 https://github.com/ultralytics/yolov5 下载yolov5程序后,虚拟环境下运行: activate v5 pip install -r requirements.txt 1.2 配置QT环境 pip install pyqt5 pyqt5-tools 使用pyqt5自带的图形界面设计工具:de

    2023年04月19日
    浏览(45)
  • QT QPluginLoader 插件开发 ui界面打包dll

     将项目模块化,每一个模块单独开发,模块的组成形成最终的主程序, 点击左侧按钮就会弹出对应的插件应用,每一个子窗口都是单独的dll 插件, 灵活,升级,下载,卸载。 效果:     打开QT Creator 新建插件开发项目  下一步后选择 Qt Plugin 开发 添加依赖库,在.pro里  

    2024年02月11日
    浏览(44)
  • 【Qt】使用Qt designer(Qt设计师)以及uic工具将ui文件转换到C++代码进行界面开发

    【Qt】编写第一个Qt程序,使用Cmake编译并运行 Qt Designer是一个用于创建Qt应用程序用户界面的图形化界面设计器。它是Python GUI开发的一个重要工具,可以帮助用户快速创建具有丰富功能的用户界面。 打开终端输入以下代码 点击创建 拖一些组件进来,点击保存 得到一个后缀为

    2024年02月16日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包