Qt/ c++写/读键值对文件

Qt/C++ Write/Read Key-Value Pair File

本文关键字:键值对 文件 c++ Qt      更新时间:2023-10-16

我有一个基于Qt/c++小部件的Mac应用程序。我有一系列的复选框、单选按钮和用于存储设置的文本字段。我想在单击Update按钮时将它们保存到键值对文件中,然后在应用程序加载时,读取该文件以将这些小部件设置回适当的状态。

是否有一个例子来说明这是如何完成的?

以下是我在Mac上使用的。然而,如果您修改settings对象的setPath(),您可以通过文档使其在其他平台上工作。

mainwindow.h中,我必须添加这些条目:

void readSettings();
void writeSettings();

下的Private Slots。

然后,在mainwindow.cpp中,我添加了这些示例函数:

void MainWindow::readSettings()
{
    QSettings settings;
    settings.setPath(settings.IniFormat,settings.SystemScope,"/etc/xdg");
    settings.beginGroup("General");
    ui->checkBox1->setChecked(settings.value("checkBox1",false).toBool());
    settings.endGroup();
}
void MainWindow::writeSettings()
{
    QSettings settings;
    settings.setPath(settings.IniFormat,settings.SystemScope,"/etc/xdg");
    settings.beginGroup("General");
    settings.setValue("checkBox1",ui->checkBox1->isChecked());
    settings.endGroup();
}

您应该在QSettings页面上阅读有关"scope"和setPath()的更多信息。

然后,在MainWindow::MainWindow()函数,我有这样的:

QCoreApplication::setOrganizationName("Example Company");
QCoreApplication::setOrganizationDomain("example.com");
QCoreApplication::setApplicationName("Example Product");
ui->setupUi(this);
this->readSettings();

注意,在设置了ui变量之后,只能设置readSettings()。通过像我一样使用QCoreApplication类,我不必一直重复声明我使用的设置。

然后,我取了MainWindow并在其上添加了checkBox1updateButton,并将updateButton clicked()插槽代码设置为:

this->writeSettings();

现在,当窗口加载时,在绘制UI之后,它读取设置,将复选框的值设置为单击更新按钮时设置的值