Как сохранить и загрузить данные с помощью QSettings? - PullRequest
1 голос
/ 28 февраля 2020

Я - полный новичок в QT5, я искал на YouTube любые учебники по QSettings и нашел только 2 из них, оба на испанском sh.

Я пытаюсь сохранить простой текст из textEdit а затем загрузить его по нажатию кнопки сохранения / загрузки. До сих пор я не смог выполнить это. Вот мой код, пока без ошибок, он просто не работает.

Виджет. cpp

void Widget::saveText(QString key, QString text)
{
    QSettings settings("App", "BillReminder");
    settings.beginGroup("Text");
    settings.setValue(key + "t", text);
    settings.endGroup();
}

QString Widget::loadText(QString key)
{
    QSettings settings("App", "BillReminder");
    settings.beginGroup("Text");
    settings.value(key + "t", text).toString();
    settings.endGroup();
    return QString(text);
}
void Widget::on_saveButton_clicked()
{
    saveText("textEdit", text);
}

void Widget::on_loadButton_clicked()
{
    QString text1 = loadText(text);
    ui->textEdit->setText(text1);
}

widget.h - class Widget : public QWidget

private:
    Ui::Widget *ui;
    QString text;

    void saveText(QString key, QString text);
    QString loadText(QString key);
    void SetText(QString key);

Ответы [ 2 ]

0 голосов
/ 05 марта 2020

Этот пример кода содержит много проблем.

  1. не скрывать имена переменных (например, «text» - аргумент метода и переменная-член); используйте, например, подчеркивание, чтобы указать переменные-члены
  2. над ответом о чтении значений, поскольку возвращаемое значение также решает одну проблему
  3. on_saveButton использует в качестве ключа настроек строку "textEdit", но on_loadButton используется неправильно " text "строка переменной члена в качестве ключа -> вы хотите использовать ту же строку для загрузки хранимой переменной, т.е. вы сейчас читаете что-то другое.
  4. вы сохраняете переменную члена" text ", которая не инициализирована в вашем примере, т.е. может быть пустым; и позже вы настраиваете редактирование текста пользовательского интерфейса с сохраненными настройками (пустая строка в вашем примере?)

Пожалуйста, go - Документация QSettings Qt для рабочего примера.

0 голосов
/ 28 февраля 2020

Проблема в вашем методе loadText (). QSettings :: value () - это функция, которая возвращает значение, полученное из хранилища QSettings. Второй параметр - это только значение по умолчанию, которое будет возвращено, если в вашем хранилище настроек нет запрошенного ключа.

QString Widget::loadText(QString key)
{
    QSettings settings("App", "BillReminder");
    settings.beginGroup("Text");
    QString theValue = settings.value(key + "t", text).toString();
    settings.endGroup();
    return theValue;
}
...