代码之家  ›  专栏  ›  技术社区  ›  Ronny Brendel

Qt4.4如何获取用户设置路径

  •  18
  • Ronny Brendel  · 技术社区  · 17 年前
    • $HOME/.config
    • 窗户: %APPDATA%

    http://qt-project.org/doc/qt-4.8/qsettings.html#setPath ,但似乎我无法取回它。

    http://qt-project.org/doc/qt-4.8/qlibraryinfo.html#location QLibraryInfo::LibrariesPath

    :我想创建一个子目录,并将文件存储到其中。(如果这是个坏主意,你可能会惩罚我)

    7 回复  |  直到 12 年前
        2
  •  9
  •   Reto Koradi    11 年前

    这是一个令人讨厌的解决方法。首先,你创建 QSettings ,然后得到它的位置。

    QSettings cfg(QSettings::IniFormat, QSettings::UserScope,
           "organization", "application");
    
    QString config_dir = QFileInfo(cfg.fileName()).absolutePath() + "/";
    

    Q设置 将默认配置存储在用户AppData目录中。请参阅文档 QSettings 此代码还指示以Ini文件格式存储配置。

        3
  •  5
  •   Petr    12 年前

    QApplication::setApplicationName("MyApp");
    QApplication::setOrganizationName("Me");
    
    QString homePath;
    
    #if QT_VERSION >= 0x050000
        homePath = QStandardPaths::writableLocation(QStandardPaths::DataLocation);
    #else
        homePath = QDesktopServices::storageLocation(QDesktopServices::DataLocation);
    #endif
    
        4
  •  1
  •   Caleb Huitt - cjhuitt    17 年前

    为什么需要知道设置路径?如果你要在其中添加设置,你可以使用 QSettings 。我可以看到创建一个子目录来保存各种设置,但似乎最简单的方法是使用 Q设置 直接。

        5
  •  1
  •   dF.    17 年前

    据我所知,你无法检索路径。在Qt源代码中, src/corelib/io/qsettings.cpp

    static QString getPath(QSettings::Format format, QSettings::Scope scope)
    {
        ...
    

    但使用Qt的代码无法访问它。你也不能复制它并使用它,因为它使用内部Qt全局变量来存储路径。..

    编辑:发布了一个解决方案,使用 QDesktopServices.storageLocation(QDesktopServices.DataLocation) QSettings.setPath() 它没有反映出变化。

        6
  •  0
  •   shoosh    17 年前

    你在哪个站台?
    可能相关也可能无关,但在windows中,默认情况下是将QSettings写入注册表。

        7
  •  0
  •   msrd0 Gordon Linoff    11 年前

    我对这个问题的了解比最初发布的要多。编辑后更清晰了。好吧,你不能用。。

    QString QSettings::fileName () const
    

    使用以下命令返回写入设置的路径 QSettings

    QSettings::NativeFormat ,返回值是系统注册表路径,而不是文件路径。