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如何获取用户设置路径的主要内容,如果未能解决你的问题,请参考以下文章