无法使用 QSettings 保存设置

Unable to save settings with QSettings

我在 Windows 7 下有一个非常简单的测试项目,仅在主要 window 上使用以下代码:

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QSettings>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QSettings::setDefaultFormat(QSettings::IniFormat);
    QSettings settings("./conf.ini");

    settings.setValue("testconf", 123);

    settings.sync();
}

MainWindow::~MainWindow()
{
    delete ui;
}

我刚从头开始创建一个项目,但主窗口是空的。作为参考,我添加了 .pro 内容,尽管它应该不相关:

QT       += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = qsettingstest
TEMPLATE = app
SOURCES += main.cpp\
        mainwindow.cpp
HEADERS  += mainwindow.h
FORMS    += mainwindow.ui

我尝试了设置文件的不同路径,使用 QStandardPaths::writableLocation(QStandardPaths::DataLocation),现有目录,例如“c:\mydir”。我也尝试用 QSettings *psettings = new QSettings("./conf.ini"); 替换 QSettings settings("./conf.ini");,调用 sync 或不调用它,但是:

文件未创建或修改(以防我之前手动创建)。为什么?

您为 QSettings 使用了 1 个 QString 构造函数。这将设置 组织名称 ,而不是文件名(请参阅 https://doc.qt.io/qt-5/qsettings.html#QSettings,应用程序名称默认为空 QString)。
这将 store/read 来自 windows 注册表的设置。检查那里的 ./conf.ini 键

您想使用带有文件名和格式的 QSetting 构造函数(参见 https://doc.qt.io/qt-5/qsettings.html#QSettings-3):

QSettings settings("./conf.ini", QSettings::IniFormat);