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

时间:2010-10-27 09:47:33

标签: qt ini qsettings

我正在使用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 个答案:

答案 0 :(得分:36)

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

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

控制台输出看起来像:

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

答案 1 :(得分:10)

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

这是特定的平台形式,见下:

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

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

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

答案 2 :(得分:7)

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

~/.config/CompanyName/ApplicationName.conf

答案 3 :(得分:2)

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

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

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

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

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

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

答案 4 :(得分:2)

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

QT&gt; = 5.5:

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

QT&lt; 5.5:

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

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

答案 5 :(得分:0)

在Mac OSX上,我在〜/ Library / Preferences

下找到了该文件
  

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

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

答案 6 :(得分:0)

Windows路径中的

如下所示: C:\ Users \用户名\ AppData \ Roaming \ bbb

答案 7 :(得分:0)

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

from PyQt5.QtCore import QSettings

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

它应该返回这样的输出。

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

Source

答案 8 :(得分:0)

在没有提供ini文件名的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