из GUI, как читать, редактировать и сохранять информацию в текстовом файле -> Qt c ++ GUI qLineEdit - PullRequest
0 голосов
/ 22 октября 2018

Доброе утро, я хочу улучшить графический интерфейс с QT c ++ для чтения, редактирования и сохранения информации в текстовом файле.Вот что у меня есть:

  1. TXT-файл с некоторыми записанными параметрами (например, "A = 1 B = 5 ...")
  2. И я смогсделать следующее с моим кодом qt в c ++:

    2.1.Я создал графический интерфейс, в котором эти параметры (A, B, ...) будут показаны в метках, а его значения будут показаны в lineEdits (1, 5, ...)

    2.2.Я могу редактировать строки редактирования, но я не уверен, как их сохранить

Мой вопрос:

Как я могу сохранить информацию?Должен ли я сделать код, чтобы сохранить изменения каждый раз, когда что-то меняется?Или все вместе в конце?или же...?Я не знаю достаточно, чтобы сделать это.

CODES

Чтобы показать значения, я использовал это:

const auto &config = AgCommConfig::getInstance(); //here my config.cpp was getting the info of the txt file

ui->lineEdit->setText(QString("%1").arg(config.speedchange())); //here my lineEdit shows the info of this txt file

И чтобы сохранить информацию обратно в текстовый файл, Я начинал с этого:

void MainWindow::on_lineEdit_editingFinished()
{
    QString input = ui->lineEdit->text();
}

У меня есть переменная сейчас, но я не знаю, правильная ли функция (я думаю, да), и я не знаю, как продолжать перезаписыватьинформация в текстовом файле

.,РЕДАКТИРОВАТЬ:

link to my picture

Я полагаю, что самый простой способ - это сохранить (перезаписать) все данные в 1, как вы сказали, а не непрерывно.

Iне хочу менять ярлыки.Только значения и обновите их в текстовом файле.

Так что в основном я предполагаю, что для каждого значения у меня должна быть 1 переменная.И это будет обновляться каждый раз с функцией '' editfinished ''.Когда он нажимает на новую кнопку «сохранить все», код должен создать новый текстовый файл с тем же именем, чтобы перезаписать старый.

Но проблема в комментариях ... Я мог бы, возможно,сохраните их в переменной, но их будет сложно заказать снова.

Скажите, пожалуйста, есть ли какой-нибудь другой самый простой способ в любой точке, или всего

Заранее большое спасибо!

1 Ответ

0 голосов
/ 22 октября 2018

Когда сохранять информацию в файл - это вопрос, определяемый требованиями.Вы можете сохранить все данные за один раз или непрерывно.Поскольку (я предполагаю, что здесь) кажется, что обновление значения не ограничивается последовательностью, я бы предложил обновить / создать файл в конце рабочего процесса.

Вы использовали правильныйфункция для получения текущего текста из QLineEdit.

Теперь для обновления значений из QLineEdit в QLabel.Вы можете обновить значение метки непосредственно внутри слота редактирования строки.Примерно так:

void MainWindow::on_lineEdit_editingFinished()
{
    QString input = ui->lineEdit->text();
    ui->label->setText(input);
}

Или вы можете подключить сигнал QLineEdit :: textChanged (const QString & text) к слоту QLabel :: setText (const QString &).Ограничение здесь может заключаться в том, что вы, кажется, хотите обновить только после завершения редактирования, это будет продолжать обновлять его.Во-вторых, предыдущий метод может позволить вам проверить ввод перед установкой значения для метки.Вы можете сделать это, введя оператор connect или подключив их во время работы дизайнера (я никогда не использовал его лично).

Другой альтернативой (моя рекомендация) было бы использование QPushButton [Изучите QAbstractButton ::щелкнул (bool флажок = ложь)] (назовите его «Установить» или что-то) для установки значения.В этом случае после нажатия кнопки вы можете скопировать текст из LineEdit в метку.Возможно, настало время сохранить значения в вашем файле.

Запись в файл может быть выполнена с использованием класса QFile .Возможно, вы захотите обрезать файл при его открытии и записать все переменные, чтобы упростить его.

Во многом я отвечаю, что я угадываю, что вы делаете.Здесь может быть полезен скриншот вашего графического интерфейса.

Редактировать: Первое, что я хочу спросить, действительно ли вам нужна переменная для хранения значений.Я имею в виду, что вы просто преобразуете их в строку для записи в файл.Переменная объекта ui должна делать (просто используйте ui-> lineEdit-> text (), когда это необходимо).

Что касается записи при сохранении комментариев, вы можете использовать QTextStream .Вы можете читать и обновлять файл построчно.Разберите строку, обновите ее и, наконец, запишите обратно в файл.

...