qt creator 点击保存按钮弹出设定新文件路径的窗口,将结构体数据保存到自定义路径的新生成的.json文件中,展示完整代码
时间: 2024-03-03 09:48:11 浏览: 70
好的,以下是基于Qt Creator的代码,实现点击保存按钮弹出设定新文件路径的窗口,将结构体数据保存到自定义路径的新生成的.json文件中:
首先,我们定义一个结构体,并在其中添加一些数据:
```cpp
struct Person {
QString name;
int age;
QString address;
};
```
然后,我们创建一个保存文件的对话框,并在用户选择保存路径后将Person结构体数据保存到.json文件中:
```cpp
void savePersonToJson(QWidget* parent, const Person& person) {
QString fileName = QFileDialog::getSaveFileName(parent, tr("Save File"), "", tr("JSON files (*.json)"));
if (fileName.isEmpty()) {
return;
}
QJsonObject jsonObj;
jsonObj["name"] = person.name;
jsonObj["age"] = person.age;
jsonObj["address"] = person.address;
QJsonDocument jsonDoc(jsonObj);
QByteArray byteArr = jsonDoc.toJson(QJsonDocument::Indented);
QFile file(fileName);
if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {
QTextStream out(&file);
out << byteArr;
file.close();
}
}
```
在这个函数中,我们首先创建一个保存文件的对话框,让用户选择保存路径。如果用户没有选择保存路径,则直接返回。如果用户选择了保存路径,则将Person结构体中的数据转换为QJsonObject类型,然后使用QJsonDocument将QJsonObject转换为json文档,并将其保存到QByteArray中。最后,我们创建一个QFile对象,打开用户指定的文件,将QByteArray中的数据写入文件中。
最后,在主函数中,我们可以将savePersonToJson()函数作为槽函数,与保存按钮的clicked信号关联起来:
```cpp
int main(int argc, char *argv[]) {
QCoreApplication a(argc, argv);
Person person;
person.name = "Tom";
person.age = 18;
person.address = "Beijing";
QPushButton saveBtn("Save");
QObject::connect(&saveBtn, &QPushButton::clicked, [&](){
savePersonToJson(&saveBtn, person);
});
return a.exec();
}
```
在这个例子中,我们创建了一个QPushButton对象,并将其clicked信号与savePersonToJson()函数关联起来。当用户点击保存按钮时,程序会弹出保存文件的对话框,让用户选择保存路径,然后将Person结构体数据保存到指定的.json文件中。
希望这段代码能够帮助到你!
阅读全文