【问题标题】:QSettings - where is the location of the ini file?QSettings - ini 文件的位置在哪里?
【发布时间】: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 什么时候写入它的值?

【问题讨论】:

    标签: qt ini 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 enumQSettings 默认保存到本地范围。在 Linux 上,我在以下位置找到了本地设置:

      ~/.config/CompanyName/ApplicationName.conf

      【讨论】:

      【解决方案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

              【讨论】:

                猜你喜欢
                • 2013-04-18
                • 1970-01-01
                • 2011-01-13
                • 2016-01-09
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2013-09-23
                • 2020-10-23
                相关资源
                最近更新 更多