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

45
我使用QSettings将一些数据存储为Windows中的ini文件。 我想查看ini文件,但是我不知道ini文件的位置在哪里。
这是我的代码:
QSettings *set = new QSettings(QSettings::IniFormat, QSettings::UserScope, "bbb", "aaa");
set->setValue("size", size());
set->setValue("pos", pos());

我该在哪里查看?或者是我错过了将值写入文件的代码?QSettings 何时写入其值?

9个回答

51

使用QSettings类的fileName方法可以打印出您设置文件的确切位置。

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

控制台输出如下:

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

7
هڈ¯ن»¥ن½؟用QStandardPaths::writableLocation(),ه¹¶ه°†ç±»ه‍‹è®¾ç½®ن¸؛QStandardPaths::ConfigLocation,و‌¥èژ·هڈ–هں؛وœ¬è·¯ه¾„(ن¸چهŒ…و‹¬و–‡ن»¶هگچ)م€‚ - Kevin Krammer
是的!这个答案是最好的。 - GeneCode

11

我认为你会在这里找到所有你需要的东西:http://doc.qt.io/archives/qt-4.7/qsettings.html

它是特定于平台的,请看下面的内容:

特定于平台的注意事项 应用程序设置存储位置

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

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

10

QSettings 保存位置更改为 QSettings.Scope 枚举。默认情况下,QSettings 保存在本地范围内。在 Linux 上,我发现我的本地设置位于:

~/.config/CompanyName/ApplicationName.conf


是的!这就是我想知道的 - QSettings settings; - 没有任何路径。就像这里:https://dev59.com/SlDTa4cB1Zd3GeqPGh8M#3598245 - Tomasz Gandor

6
在Linux中,您可以使用此代码片段或将这些行插入到您的主要代码中,以便使用Python查找文件位置。
from PyQt5.QtCore import QSettings

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

它应该返回类似于这样的输出。

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

来源


5
请查看 QStandardPaths 类,它链接到包括所有支持平台上的配置在内的多个标准路径。QT >= 5.5 可用。详情请参见 https://doc.qt.io/qt-5/qstandardpaths.html
QString path = QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation);

QT < 5.5:

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

在共享配置目录、应用程序数据目录等位置,都可以找到配置文件的路径。


4
如果没有指定路径,创建QSettings,那么ini文件会被放在应用程序路径中。
QSettings Settings("myapp.ini", QSettings::IniFormat);
Settings.setValue("Test", "data");

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

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

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

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


我不确定这是否有效,我已经尝试过了,但是我在应用程序路径中找不到设置。 - Kiril
QApplication:applicationDirPath()通常是不可写的,因此很少用作在运行时创建文件的位置。 也许你想要使用应用程序的当前工作目录? - Kevin Krammer

2

在 Windows 上如果没有提供文件名,则可以在注册表中找到数据。使用以下代码片段:

    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

1
在Windows中,路径如下: C:\Users\user_name\AppData\Roaming\bbb

0
在Mac OSX上,我发现文件位于~/Library/Preferences下。
QSettings类提供了持久的跨平台应用程序设置。用户通常希望应用程序能够记住其设置(窗口大小和位置、选项等)并在会话之间保留。这些信息通常存储在Windows系统注册表中,在Mac OS X上则存储在XML首选项文件中。在Unix系统中,缺乏标准的情况下,许多应用程序(包括KDE应用程序)使用INI文本文件。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接