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

时间:2009-03-31 12:40:45

标签: c++ qt

  • linux:$HOME/.config
  • windows:%APPDATA%
  • mac os:$HOME/.config

可以使用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 个答案:

答案 0 :(得分:20)

这可能无法直接回答您的问题:如果您想存储每个用户的持久数据,那么您不应该使用QDesktopServices::storageLocation(QDesktopServices::DataLocation)吗?

答案 1 :(得分:8)

这是一个讨厌的解决方法。首先,您创建QSettings,然后获取其位置。

QSettings cfg(QSettings::IniFormat, QSettings::UserScope,
       "organization", "application");

QString config_dir = QFileInfo(cfg.fileName()).absolutePath() + "/";

积分转到Qt中心论坛。

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

答案 2 :(得分:5)

这适用于qt 4和qt 5

QApplication::setApplicationName("MyApp");
QApplication::setOrganizationName("Me");

QString homePath;

#if QT_VERSION >= 0x050000
    homePath = QStandardPaths::writableLocation(QStandardPaths::DataLocation);
#else
    homePath = QDesktopServices::storageLocation(QDesktopServices::DataLocation);
#endif

答案 3 :(得分:1)

据我所知,你无法检索路径。在Qt源src/corelib/io/qsettings.cpp中,有一个获取路径的函数:

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

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

编辑:使用QDesktopServices.storageLocation(QDesktopServices.DataLocation)发布了一个解决方案,但它并没有完全符合问题的要求,即如果我使用QSettings.setPath()设置自定义路径,则不会反映更改。

答案 4 :(得分:1)

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

答案 5 :(得分:0)

你在哪个平台?
可能是相关与否,但在Windows中,默认是将QSettings写入注册表。

答案 6 :(得分:0)

我在问题中阅读的内容比原先发布的内容多。编辑后更清楚。好的,你也不能用..

QString QSettings::fileName () const

返回使用此QSettings对象写入设置的路径。

在Windows上,如果格式为QSettings::NativeFormat,则返回值是系统注册表路径,而不是文件路径。