$HOME/.config
%APPDATA%
$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
返回系统范围的设置目录,这不是我想要的。
任何想法,还是我必须为每个平台单独编码?
€:我想创建一个子目录,并将文件存储到其中。 (如果这是一个坏主意,你可以惩罚我)
答案 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
,则返回值是系统注册表路径,而不是文件路径。