QT 读写JSON文件 Demo

2023-05-11 05:51:01    来源:QT教程


(资料图片)

不废话 直接上代码

private slots:    void seeCardInfo(QTreeWidgetItem*,int);    void on_lineEdit_fix_code_textChanged(const QString &arg1);    void on_pushButton_clicked();    void dialogMenuSlot(QAction *action);    void on_treeWidget_customContextMenuRequested(const QPoint &pos);private:    void _init(); //override;    QStringList names;    QString JsonPath;    QMenu *fixcard_Menu;    QAction *fixcard_addAction;    QAction *fixcard_delAction;    QAction *fixcard_chageAction;void MainWindow::seeCardInfo(QTreeWidgetItem *item, int a){    ui->lineEdit_fix_code->clear();ui->lineEdit_lru->clear();    ui->lineEdit_fix_time->clear();ui->lineEdit_fix_item->clear();    ui->lineEdit_person_need->clear();ui->lineEdit_tool->clear();    ui->plainTextEdit_supplies->clear();ui->plainTextEdit_notice->clear();    ui->plainTextEdit_fix_standard->clear();ui->plainTextEdit_fix_step->clear();    if(item->text(a).contains("json")){        QFile loadFile(QString("./cfg/fault_diagnose_cfg/fix_card/%1/%2").arg(item->parent()->text(0)).arg(item->text(a)));        JsonPath = QString("./cfg/fault_diagnose_cfg/fix_card/%1/%2").arg(item->parent()->text(0)).arg(item->text(a));        qDebug()<< JsonPath;        if(!loadFile.open(QIODevice::ReadOnly))        {            qDebug() << "could"t open projects json";            return;        }        QByteArray allData = loadFile.readAll();        loadFile.close();        QJsonParseError jsonError;        QJsonDocument jsonDoc(QJsonDocument::fromJson(allData, &jsonError));        if(jsonError.error != QJsonParseError::NoError)        {            qDebug() << "json error!" << jsonError.errorString();            return;        }        QJsonObject rootObj = jsonDoc.object();        if(rootObj.contains("fix_code")){            QJsonValue value = rootObj.value("fix_code");  // 获取指定 key 对应的 value1            if(value.isString()){                QString fixCode = value.toString();                ui->lineEdit_fix_code->setText(fixCode);            }        }        if(rootObj.contains("lru_name")){            QJsonValue value = rootObj.value("lru_name");  // 获取指定 key 对应的 value2            if(value.isString()){                QString lruName = value.toString();                ui->lineEdit_lru->setText(lruName);            }        }        if(rootObj.contains("fix_time")){            QJsonValue value = rootObj.value("fix_time");  // 获取指定 key 对应的 value3            if(value.isString()){                QString fixTime = value.toString();                ui->lineEdit_fix_time->setText(fixTime);            }        }        if(rootObj.contains("fix_name")){            QJsonValue value = rootObj.value("fix_name");  // 获取指定 key 对应的 value4            if(value.isString()){                QString fixName = value.toString();                ui->lineEdit_fix_item->setText(fixName);            }        }        if(rootObj.contains("person_need")){            QJsonValue value = rootObj.value("person_need");  // 获取指定 key 对应的 value5            if(value.isString()){                QString person = value.toString();                ui->lineEdit_person_need->setText(person);            }        }        if(rootObj.contains("tool")){            QJsonValue value = rootObj.value("tool");  // 获取指定 key 对应的 value6            if(value.isString()){                QString tool = value.toString();                ui->lineEdit_tool->setText(tool);            }        }        if(rootObj.contains("supplies")){            QJsonValue value = rootObj.value("supplies");  // 获取指定 key 对应的 value7            if(value.isString()){                QString supplies = value.toString();                ui->plainTextEdit_supplies->appendPlainText(supplies);            }        }        if(rootObj.contains("notice")){            QJsonValue value = rootObj.value("notice");  // 获取指定 key 对应的 value8            if(value.isString()){                QString notice = value.toString();                ui->plainTextEdit_notice->appendPlainText(notice);            }        }        if(rootObj.contains("fix_standard")){            QJsonValue value = rootObj.value("fix_standard");  // 获取指定 key 对应的 value9            if(value.isString()){                QString fixStandard = value.toString();                ui->plainTextEdit_fix_standard->appendPlainText(fixStandard);            }        }        if(rootObj.contains("fix_step")){            QJsonValue value = rootObj.value("fix_step");  // 获取指定 key 对应的 value10            if(value.isString()){                QString fixStep = value.toString();                ui->plainTextEdit_fix_step->appendPlainText(fixStep);            }        }    }    else{        return;    }}void MainWindow::_init(){    QString path = "./cfg/fault_diagnose_cfg/fix_card";    ui->pushButton->hide();    QDir dir(path);    names = dir.entryList(QDir::Dirs);    names.removeOne(".");    names.removeOne("..");    for(int i = 0; i < names.size(); i++){        QTreeWidgetItem *item = new QTreeWidgetItem(ui->treeWidget);        item->setText(0, names.at(i));        QString strPath = QString("./cfg/fault_diagnose_cfg/fix_card/%1").arg(names.at(i));        QDir strDir(strPath);        QStringList strNames = strDir.entryList(QDir::Files);        for(int i = 0; i < strNames.size(); i++){            QTreeWidgetItem *item1 = new QTreeWidgetItem(item);            item1->setText(0, strNames.at(i));            item->addChild(item1);        }    }    QObject::connect(ui->treeWidget, SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)), this, SLOT(seeCardInfo(QTreeWidgetItem*,int)));    ui->treeWidget->setContextMenuPolicy(Qt::CustomContextMenu);    fixcard_Menu = new QMenu("Test",ui->treeWidget);    fixcard_addAction = new QAction("新增工卡",fixcard_Menu);    fixcard_delAction = new QAction("删除工卡",fixcard_Menu);    fixcard_chageAction = new QAction("修改工卡",fixcard_Menu);    fixcard_Menu->addAction(fixcard_addAction);    fixcard_Menu->addAction(fixcard_delAction);    fixcard_Menu->addAction(fixcard_chageAction);    QObject::connect(fixcard_Menu,SIGNAL(triggered(QAction*)),this,SLOT(dialogMenuSlot(QAction*)));}void MainWindow::on_pushButton_clicked(){    QString fix_code = ui->lineEdit_fix_code->text();    QString lru_name =  ui->lineEdit_lru->text();    QString fix_time = ui->lineEdit_fix_time->text();    QString fix_name = ui->lineEdit_fix_item->text();    QString person_need = ui->lineEdit_person_need->text();    QString tool= ui->lineEdit_tool->text();    QString supplies = ui->plainTextEdit_supplies->toPlainText();    QString notice = ui->plainTextEdit_notice->toPlainText();    QString fix_standard = ui->plainTextEdit_fix_standard->toPlainText();    QString fix_step =  ui->plainTextEdit_fix_step->toPlainText();    QFile loadFile(JsonPath);    if(!loadFile.open(QIODevice::ReadWrite))    {        qDebug() << "could"t open projects json";        return;    }    QByteArray allData = loadFile.readAll();    QJsonParseError jsonError;    QJsonDocument jsonDoc(QJsonDocument::fromJson(allData, &jsonError));    if(jsonError.error != QJsonParseError::NoError)    {        qDebug() << "json error!" << jsonError.errorString();        return;    }    QJsonObject rootObj = jsonDoc.object();    rootObj.insert("fix_code", fix_code);    rootObj.insert("lru_name", lru_name);    rootObj.insert("fix_time", fix_time);    rootObj.insert("fix_name", fix_name);    rootObj.insert("person_need", person_need);    rootObj.insert("tool", tool);    rootObj.insert("supplies", supplies);    rootObj.insert("notice", notice);    rootObj.insert("fix_standard", fix_standard);    rootObj.insert("fix_step", fix_step);    QJsonDocument doc(rootObj);    QByteArray data=doc.toJson();    QFile file(JsonPath);    file.open(QIODevice::WriteOnly);    file.write(data);    file.close();    loadFile.close();    QMessageBox::information(this,"提示","保存成功!");}void MainWindow::on_lineEdit_fix_code_textChanged(const QString &arg1){    ui->pushButton->show();   // ui->comboBox->currentText();}void MainWindow::on_treeWidget_customContextMenuRequested(const QPoint &pos){    fixcard_Menu->exec(QCursor::pos());}void MainWindow::dialogMenuSlot(QAction *action){    if(action == fixcard_addAction)    {        qDebug() <<"1111"<treeWidget->currentItem()->parent()->text(0)<treeWidget->currentItem()->text(0);    }    else if (action == fixcard_delAction)    {    }    else if (action == fixcard_chageAction)    {    }}

【领 QT开发教程 学习资料, 点击下方链接莬费领取↓↓ ,先码住不迷路~】

点击这里:

标签:

X 关闭

X 关闭