基于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
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
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
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
2
# 界面设计
整体界面如上图所示。为了简洁,只保留一个输入框和下载按钮。下面左侧为下载文件列表,右侧为文件信息。 点击选项-设置菜单打开设置窗口。
编辑 (opens new window)
上次更新: 2024/12/04, 16:28:16