QT 在lineEdit中读取、修改JSON文件内的值(开发实践中)

**需求描述:**在实际开发中,以JSON格式保存数据,作为配置文件,供程序使用。为实现可视化,方便修改文件,现需要将JSON文件中的内容读取出来,分别放到界面中(放在lineEdit中)修改,保存。
**1. 拖拽组件。**如下所示:3个按钮,3个lineEdit组件,2个标签
在这里插入图片描述
2.为按钮关联槽函数。
widget.cpp文件内容如下:

#include "widget.h"
#include "ui_widget.h"
#include<QJsonDocument>
#include<QJsonObject>
#include<QJsonArray>
#include<QFile>
#include<QDebug>
#include<QFileDialog>
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_choice_btn_clicked()
{
    QString path=QFileDialog::getOpenFileName(this,"打开文件","E:\\Qt_Code\\Json_Test\\test.json");
    //将路径放到lineEdit中
    ui->path_Edit->setText(path);


    //-------------------------------------
    QFile file("E:\\Qt_Code\\Json_Test\\test.json");
    file.open(QIODevice::ReadOnly);
    QByteArray data=file.readAll();
  //   file.close();   //关闭文件
     //使用json文件对象加载字符串
     QJsonDocument doc=QJsonDocument::fromJson(data);
    // QJsonParseError jsonError;
     //判断是否对象
     if(doc.isObject())
     {
         //把json文档转换为json对象
                  QJsonObject obj=doc.object();

                  if(obj.contains("ip"))
                  {//包含指定的key
                      QJsonValue valObj=obj.value("ip");
                      QString ip= valObj.toString();
                      qDebug() << "ip : " << ip;
                      ui->ip_Edit->setText(ip);
                  }
                  if(obj.contains("port"))
                  {
                      QJsonValue valObj=obj.value("port");
                      QString port= valObj.toString();
                      qDebug() << "port : " << port;
                      ui->port_Edit->setText(port);
                  }


     }
     file.close();   //关闭文件
}

void Widget::on_save_btn_clicked()
{

    QString ip=ui->ip_Edit->text();
    QString port=ui->port_Edit->text();
    //创建json对象
  //  QJsonObject obj;
    QJsonObject sub;
    sub.insert("ip",QJsonValue(ip));
    sub.insert("port",QJsonValue(port));
   // obj.insert("server",QJsonValue(sub));

    //内存中的数据写到文件
      QJsonDocument doc(sub);
    //将json对象转换成字符串
       QByteArray data=doc.toJson();
       QFile file("E:\\Qt_Code\\Json_Test\\test.json");
       file.open(QIODevice::WriteOnly);
       file.write(data);
       file.close();
}

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值