我在Windows 7下有一个非常简单的测试项目,只在主窗口中使用以下代码:
#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;
}我刚刚从零开始做了一个项目,MainWindow是空的。作为参考,我添加了.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 *psettings = new QSettings("./conf.ini");,调用sync或不调用sync,但是:
该文件不会被创建或修改(如果我之前手动创建它)。为什么?
发布于 2021-08-30 12:17:47
您可以为QString使用一个QSettings构造函数。这将设置组织名称,而不是文件名(请参见https://doc.qt.io/qt-5/qsettings.html#QSettings,应用程序名称默认为空QString)。
这将从windows注册表存储/读取设置。检查那里有一个/ Check . for钥匙。
您希望使用具有文件名和格式的QSetting构造函数(参见https://doc.qt.io/qt-5/qsettings.html#QSettings-3):
QSettings settings("./conf.ini", QSettings::IniFormat);https://stackoverflow.com/questions/68983733
复制相似问题