PeaceSheep's blog PeaceSheep's blog
首页
  • 分类
  • 标签
  • 归档
相关链接
提建议&咨询&赞赏
GitHub (opens new window)

PeaceSheep

以最简洁、易懂的话解决问题
首页
  • 分类
  • 标签
  • 归档
相关链接
提建议&咨询&赞赏
GitHub (opens new window)
  • 下载器

    • 基于QT使用C-开发下载器(1)——构思
    • 基于QT使用C-开发下载器(2)——界面设计与配置文件读取
      • 配置文件
        • Read函数
        • Save
        • Get
        • Set
      • 界面设计
  • 作业网站管理

  • 联邦学习

  • 随手写的小项目

  • docker

  • 即时通讯

  • 项目
  • 下载器
PeaceSheep
2022-03-14
目录

基于QT使用C-开发下载器(2)——界面设计与配置文件读取

项目已经创建并开源在Github:链接 (opens new window)

# 配置文件

一开始想用jsoncpp来做,后来发现既然用了QT,QT为我们提供了很方便的Json操作方法,因此直接使用QT的Json相关类进行操作就可以了。 Config类 共包含四个接口:

	QJsonValue Get(Qstring key);//获取key对应的配置
	int Set(Qstring key,Qstring value);//设置key对应的配置为value
	int Save();//保存当前配置到文件
	int Read();//读取配置文件
1
2
3
4

以上三个函数返回0表示操作成功,否则失败。

# Read函数

 std::fstream _file;
    _file.open("config.json", std::ios::in);//检测是否存在;配置文件
    if (_file)
    {
        _file.close();
        QFile file("config.json");
        file.open(QIODevice::ReadOnly | QIODevice::Text);//打开文件
        QString value = file.readAll();//读取
        file.close();
        QJsonParseError parseJsonErr;
        QJsonDocument document = QJsonDocument::fromJson(value.toUtf8(), &parseJsonErr);
        qDebug() << parseJsonErr.error;
        if (!(parseJsonErr.error == QJsonParseError::NoError)) 
        {
            QMessageBox box(QMessageBox::Critical, QString::fromLocal8Bit("错误."), QString::fromLocal8Bit("读取配置文件失败:")+ QString::fromStdString(std::to_string(parseJsonErr.error)));
            box.exec();
            return false;
        }
        object = document.object();//将配置设置为根据配置文件构建的QJsonObject
    }
    return true;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

Read函数在MainWindow的构造函数运行。

# Save

    QJsonDocument doc;
    QJsonArray array;
    array.append(object);
	doc.setArray(array);
    QByteArray data = doc.toJson();//也不知道为什么要这么复杂的操作

    QFile file("config.json");//json写入文件
    file.open(QIODevice::WriteOnly);
    file.write(data);
    file.close();
    return true;
1
2
3
4
5
6
7
8
9
10
11

# Get

return object.value(key);
1

# Set

object.insert(key,value);
return 0;
1
2

# 界面设计

​

整体界面如上图所示。为了简洁,只保留一个输入框和下载按钮。下面左侧为下载文件列表,右侧为文件信息。 点击选项-设置菜单打开设置窗口。

编辑 (opens new window)
#QT#C++
上次更新: 2025/07/08, 16:10:01
基于QT使用C-开发下载器(1)——构思
班级作业管理系统——整体设计思路

← 基于QT使用C-开发下载器(1)——构思 班级作业管理系统——整体设计思路→

最近更新
01
前端概念梳理
06-26
02
愚蠢错误收集
05-29
03
ubuntu安装g++显示已有但是输入g++又找不到命令
04-15
更多文章>
Theme by Vdoing | Copyright © 2022-2025 PeaceSheep
冀ICP备2022004632号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式