首页 > 解决方案 > 如何使用 QSettings 保存和加载数据?

问题描述

我是 QT5 的初学者,我在 YouTube 上搜索了任何 QSettings 教程,只找到了其中的 2 个,都是西班牙语的。

我正在尝试存储来自 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);
}

小部件.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);

标签: c++qtqt5qsettings

解决方案


问题出在您的 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;
}

推荐阅读