Como salvo variaveis em um arquivo automaticamente com JSON?
Unsolved
Portuguese
-
Boa tarde, estou precisando salvar minhas variaveis do menu q criei em um arquivo. Meu programa e' outro, ja esta praticamente finalizado, mas fiz outro programa simples e rapido pra testar um JSON. So' que, a maneira q eu estou salvando as variaveis editadas, e' com 2 botoes, um salvar e outro "abrir arquivo". Mas eu queria mesmo e' q meu programa fizesse isso sem eu precisar clicar em algum botao, apenas editando um QLabel ou um LineEdit, salvasse automaticamente com JSON. Aqui esta' meu codigo:
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QTextStream> #include <QFileDialog> #include <QFile> #include <QStringList> #include <QJsonDocument> #include <QJsonObject> #include <QString> #include <QJsonValue> #include <QtMath> #include <QDebug> #include <QMessageBox> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } QString numeric = "00000"; int CursorPosition = 0; void MainWindow::keyPressEvent(QKeyEvent * event) { CursorPosition = ui->lineEdit->cursorPosition(); if(event->key() == Qt::Key_Up || event->key() == Qt::Key_Down){ // Se estiver no caracter nulo da String ou estiver em um delimitador, então anule a ação if(CursorPosition == numeric.count()) return; if(numeric.at(CursorPosition) == '.' ) return; // Quebrar IP String em segmentos de strings [0] 000 [1] 000 [2] 000 [3] 000 int numericSplitted = numeric.at(CursorPosition).toLatin1() - '0'; // Calculando as Posições const int sectionPos2 = CursorPosition ; // const int characterPos = CursorPosition % 4; // Selecionar a sentença e converter para Inteiro int numericNumber = (int)numericSplitted; // Subtrair ou Somar 10^posição if(event->key() == Qt::Key_Up){ numericNumber += 1; if(numericNumber > 9) numericNumber = 9; } else{ numericNumber -= 1; if(numericNumber < 0) numericNumber = 0; } // Inserir Nova Sentença de IP QString numericSentence; numeric.replace(sectionPos2, 1, numericSentence.sprintf("%d", numericNumber)); // Inserir String no LineEdit e restaurando posição do Cursor const int restorePosition2 = CursorPosition; ui->lineEdit->setText(numeric); ui->lineEdit->setCursorPosition(restorePosition2); qDebug() << restorePosition2; qDebug() << sectionPos2; } } void MainWindow::on_salvarArquivo_PushButton_clicked() { QString json_filter = "JSON (*.json)"; QString nome_arquivo = QFileDialog::getSaveFileName(this, tr("Salvar Arquivo"), "/", tr("Qualquer arquivo (*);;%1").arg(json_filter), &json_filter, QFileDialog::DontUseNativeDialog); if(nome_arquivo.isEmpty()){ } else { QString valor5 = ui->lineEdit->text(); QJsonDocument doc; QJsonObject obj; obj["valor5"] = valor5; doc.setObject(obj); QByteArray data_json = doc.toJson(); QFile output(nome_arquivo); if (output.open(QIODevice::WriteOnly | QIODevice::Text)) { output.write(data_json); output.close(); QMessageBox::information(this, tr("Mensagem"), tr("Documento salvo com sucesso!")); } else { QMessageBox::critical(this, tr("Erro"), output.errorString()); } } } void MainWindow::on_abrirArquivo_PushButton_clicked() { QString json_filter = "JSON (*.json)"; QString nome_arquivo = QFileDialog::getOpenFileName(this, tr("Abrir Arquivo"), "/", tr("Qualquer arquivo (*);;%1").arg(json_filter), &json_filter, QFileDialog::DontUseNativeDialog); if(nome_arquivo.isEmpty()){ } else { QJsonDocument doc; QJsonObject obj; QByteArray data_json; QFile input(nome_arquivo); if (input.open(QIODevice::ReadOnly | QIODevice::Text)) { data_json = input.readAll(); doc = doc.fromJson(data_json); obj = doc.object(); QString valor5 = obj["valor5"].toString(); ui->lineEdit->setText(valor5); QMessageBox::information(this, tr("Mensagem"), tr("Documento lido corretamente!")); } else { QMessageBox::critical(this, tr("Erro"), input.errorString()); } } }