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

Posted

技术标签:

【中文标题】Qt4.4如何获取用户设置路径【英文标题】:Qt4.4 how to get the user settings path 【发布时间】:2009-03-31 12:40:45 【问题描述】: linux:$HOME/.config 窗口:%APPDATA% mac 操作系统:$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 返回系统范围的设置目录,这不是我想要的。

有什么想法,还是我必须为每个平台单独编码?

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

/home/user/.local/share/data// 看起来不错,尽管它似乎不是特定于 QT 的。你们中的任何人都可以在windoze上尝试一下并将结果粘贴到这里吗?那简直太好了。谢谢 在 Windows XP 上,它应该类似于“C:\Document and Settings\user\Local Settings\Application Data”【参考方案2】:

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

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

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

积分转到 Qt 中心论坛。

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

【讨论】:

【参考方案3】:

这适用于 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

【讨论】:

【参考方案4】:

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

【讨论】:

这可能是兆字节的数据 - 这可能会减慢整个设置的速度。【参考方案5】:

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

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

    ...

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

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

【讨论】:

【参考方案6】:

你在哪个平台? 可能有关系,但在windows中,默认是写QSettings到注册表。

【讨论】:

我想在这个目录中存储文件。我已经知道它们在每个平台上的位置,但是有没有一种 qt 方式来获取这些信息?【参考方案7】:

我对该问题的了解比最初发布的要多。修改后更清晰。好的,所以你不能使用..

QString QSettings::fileName () const

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

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

【讨论】:

我不想要主目录,而是设置目录。问题中给出的示例。 在对问题进行澄清编辑后,已对答案进行了编辑。

以上是关于Qt4.4如何获取用户设置路径的主要内容,如果未能解决你的问题,请参考以下文章

如何使用字符串属性路径获取/设置属性值?

Groovy如何获取访问地址

如何将用户获取的文件路径保存在Json文件中?

如何在 C# 中为当前用户获取桌面路径?

标准用户(XP/Server 2003及以下)如何获取所有运行进程的镜像路径?

如何使用 C++ 获取 Windows 用户配置文件路径的父文件夹