QSettings - ini 文件的位置在哪里?

Posted

技术标签:

【中文标题】QSettings - ini 文件的位置在哪里?【英文标题】:QSettings - where is the location of the ini file? 【发布时间】:2011-05-01 05:13:02 【问题描述】:

我正在使用QSettings 将一些数据存储为 Windows 中的 ini 文件。 我想看ini文件,但不知道ini文件在什么位置。

这是我的代码:

QSettings *set = new QSettings(QSettings::IniFormat, QSettings::UserScope, "bbb", "aaa");
set->setValue("size", size());
set->setValue("pos", pos());

我必须看哪里?或者我可能会错过将其写入文件的代码? QSettings 什么时候写入它的值?

【问题讨论】:

【参考方案1】:

要打印出设置文件的确切位置,请使用 QSettings 类的 fileName 方法。

QSettings settings("folderName", "fileName");
qDebug() << settings.fileName();

控制台输出如下所示:

/home/user/.config/folderName/fileName.conf

【讨论】:

基本路径(没有文件名)也可以通过QStandardPaths::writableLocation()使用QStandardPaths::ConfigLocation作为类型检索 是的!这个答案是最好的。【参考方案2】:

我想你会在这里找到你想要的一切:http://doc.qt.io/archives/qt-4.7/qsettings.html

它是特定于平台的,见下文:

平台特定说明 存储应用程序设置的位置

您也可以将设置存储在文件中:

QSettings settings("/home/petra/misc/myapp.ini",
                QSettings::IniFormat);

【讨论】:

【参考方案3】:

QSettings 将位置更改保存到QSettings.Scope enum。 QSettings 默认保存到本地范围。在 Linux 上,我在以下位置找到了本地设置:

~/.config/CompanyName/ApplicationName.conf

【讨论】:

是的!这就是我想知道的 - QSettings settings; - 没有任何路径。就像在这里:***.com/a/3598245/1338797【参考方案4】:

如果您创建QSettings 而不提供任何特定路径,则ini 文件将位于application path 中。

QSettings Settings("myapp.ini", QSettings::IniFormat);
Settings.setValue("Test", "data");

//...
qDebug() << QApplication::applicationDirPath();

但请注意:应用程序路径可能会改变:例如,如果您使用 Qt Creator 开发应用程序,在调试模式下,应用程序路径位于 /debug 子文件夹中。

如果您在发布模式下运行它,应用程序路径在/release 子文件夹中。

当您的应用程序被部署时,默认情况下,应用程序路径与可执行文件位于同一文件夹中(至少对于 Windows)。

【讨论】:

我不确定这是否真的有效,我试过了,但我在应用程序路径中找不到设置。 QApplication:applicationDirPath() 通常不可写,因此不太可能用作运行时创建的文件的位置。也许您的意思是应用程序的当前工作目录?【参考方案5】:

查看QStandardPaths 类,它链接到多个标准路径,包括所有支持平台上的配置。 https://doc.qt.io/qt-5/qstandardpaths.html

QT >= 5.5:

QString path = QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation);

QT

QString path = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation);

在共享配置目录、应用程序数据目录等中有配置文件的路径。

【讨论】:

【参考方案6】:

在 linux 中,您可以使用这个 sn-p 或将此行插入到您的主代码中,以便使用 python 查找文件的位置。

from PyQt5.QtCore import QSettings

settings = QSettings("Organization Name", "App name")
print(QSettings.fileName(settings))

它应该返回这样的输出。

/$HOME/.config/Organization Name/App name.conf

Source

【讨论】:

【参考方案7】:

windows 路径如下: C:\Users\user_name\AppData\Roaming\bbb

【讨论】:

【参考方案8】:

在 Mac OSX 上,我在 ~/Library/Preferences 下找到了该文件

QSettings 类提供与平台无关的持久应用程序设置。 用户通常希望应用程序在会话中记住其设置(窗口大小和位置、选项等)。此信息通常存储在 Windows 上的系统注册表中,以及 Mac OS X 上的 XML 首选项文件中。在 Unix 系统上,在没有标准的情况下,许多应用程序(包括 KDE 应用程序)使用 INI 文本文件

http://doc.qt.io/archives/qt-4.7/qsettings.html

【讨论】:

【参考方案9】:

在不提供 ini 文件名的 Windows 上,您会在注册表中找到数据。 使用这段代码sn-p:

    int red = color.red();
    int green = color.green();
    int blue = color.blue();
    QSettings settings("Joe", "SettingsDemo");
    qDebug() << settings.fileName();
    settings.beginGroup("ButtonColor");
    settings.setValue("button1r", red);
    settings.setValue("button1g", green);
    settings.setValue("button1b", blue);
    settings.endGroup();

运行此代码后,您将看到输出:

"\\HKEY_CURRENT_USER\\Software\\Joe\\SettingsDemo"

现在,打开 regedit 工具并按照您获得的路径列表:1

【讨论】:

以上是关于QSettings - ini 文件的位置在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

QSettings 类

QSettings配置读写-win注册表操作-ini文件读写

QSettings使用方法

QSettings 读/写ini配置文件中的数组数据

Qt读写三种文件,QSettings读ini配置文件,QJsonDocument读JSON文件,QDomDocument读xml文件

QSettings读取INI配置文件带逗号出问题