Qt实现XML配置文件生成程序(升级版)

一、新增功能

  1. 新增源目录与输出目录的选择
  2. 新增历史记录功能,再次打开将会记忆上次选取的源目录、输出目录、URL、版本号
  3. 新增文件复制功能,点击生成时将会把文件复制到输出目录
  4. 新增程序图标

二、功能实现

1.记忆功能(放入构造、析构函数中)

void Widget::saveSettings()
{
    QSettings settings("Buildhistory.ini",QSettings::IniFormat);

    settings.setValue("MainDir", ui->lineEditMainDir->text());
    settings.setValue("RootDir", ui->lineEditRootDir->text());
    settings.setValue("URL", ui->lineEditURL->text());
    settings.setValue("Version", ui->lineEditVersion->text());
}

void Widget::loadSettings()
{
    QSettings settings("BuildHistory.ini",QSettings::IniFormat);
    ui->lineEditRootDir->setText(settings.value("RootDir").toString());
    ui->lineEditMainDir->setText(settings.value("MainDir").toString());
    ui->lineEditURL->setText(settings.value("URL").toString());
    ui->lineEditVersion->setText(settings.value("Version").toString());
}

2.复制文件到输出目录处

void Widget::on_btnBuild_clicked()
{
    QString globalURL = ui->lineEditURL->text();
    if (!globalURL.endsWith('/'))
        globalURL.append('/');

    QString version = ui->lineEditVersion->text();

    QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");

    QString fileName = "ServerVersionInfo.xml";
    QFile file(m_rootPath + '/' +fileName);
    if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
    {
        QMessageBox::warning(this, "Error", "Failed to open file for writing.");
        return;
    }

    QXmlStreamWriter xmlWriter(&file);
    xmlWriter.setAutoFormatting(true);
    xmlWriter.writeStartDocument();
    xmlWriter.writeStartElement("Config");
    xmlWriter.writeStartElement("Server");
    xmlWriter.writeTextElement("XMLURL", globalURL + fileName);
    xmlWriter.writeTextElement("MAINVER", version);
    xmlWriter.writeTextElement("VERDATE", currentDateTime);
    xmlWriter.writeTextElement("AUTHOR", "geek");

    xmlWriter.writeStartElement("FILECOUNT");
    xmlWriter.writeCharacters(QString::number(m_fileHashes.count()));
    xmlWriter.writeEndElement();
    xmlWriter.writeStartElement("FILES");
    for (auto it = m_fileHashes.begin(); it != m_fileHashes.end(); ++it)
    {
        QString filePath = it.key();
        QString fileURL = globalURL +  filePath;
        QString fileHash = it.value();

        QString destFilePath = m_rootPath + '/' + filePath;
        QString destDirPath = QFileInfo(destFilePath).path();
        QDir().mkpath(destDirPath); // 创建相应文件夹
        if (!QFile::copy(m_mainPath + '/'+filePath, destFilePath))
        {
            QMessageBox::warning(this, "Error", "Failed to copy file: " + filePath);
            qDebug()<<"filePath:"<<filePath<<"\n destFilePath:"<<destFilePath<<"\n destDirPath:"<<destDirPath;
            file.close();
            return;
        }

        xmlWriter.writeStartElement("FILE");
        xmlWriter.writeTextElement("FILENAME", filePath);
        xmlWriter.writeTextElement("FILEURL", fileURL);
        xmlWriter.writeTextElement("FILEHASH", fileHash);
        xmlWriter.writeEndElement(); // End of FILE
    }
    xmlWriter.writeEndElement(); // End of FILES

    xmlWriter.writeEndElement(); // End of Server
    xmlWriter.writeEndElement(); // End of Config
    xmlWriter.writeEndDocument();

    file.close();

    QMessageBox::information(this, "Success", "Server version info generated successfully.");
}

三、下载链接

https://download.csdn.net/download/Completits_/89106319

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Completits_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值