QDir::tempPath()和QStandardPaths::writableLocation()的区别

5

我看到两者都指向相同的路径,所以可以使用任意一个。 - eyllanesc
1
@eyllanesc 对我来说路径也是一样的,但可能在底层有一些特定于操作系统的差异,这就是我在问的原因。 - John Doe
1
如果有人能解释一下-1的原因,我会非常感激:我是新来的,准备接受批评,但是沉默的-1对我来说似乎没有建设性。 - John Doe
1
两者的文档都非常清晰,指明了它们所取的值。我不知道你期望什么样的解决方案或魔法答案。你在等待什么样的回答?你可以检查源代码,可能会发现在Qt5中使用QStandardPaths::writableLocation(QStandardPaths::TempLocation)代替QDir::tempPath(),如果是在Qt4中,则使用类似的方法。 - eyllanesc
2
是的,它是特定于操作系统的,许多Qt标准路径也有点棘手。但是如果您尝试在Android上获取卷信息,情况会变得更糟。 - dtech
1个回答

6

TL;DR: 建议使用QStandardPaths::writableLocation

在Unix、OS X和Windows系统中,它们保证始终返回相同的结果。例如,在qstandardpaths_win.cppqstandardpaths_unix.cppqstandardpaths_mac.mmqstandardpaths_winrt.cpp文件中:

QString QStandardPaths::writableLocation(StandardLocation type) {
  switch (type) { 
    //[...]
    case TempLocation:
      return QDir::tempPath();

在Android和Haiku系统上,QStandardPaths::writableLocation返回的值采用了适当的系统特定方法,而tempPath返回的值使用了基于遗留环境变量的方法,在这些系统上应该被视为已弃用的方法。

在Android文档中是否有说明使用TMPDIR(由QDir :: tempPath使用)已被弃用?请注意,我已经提交了一个错误报告(https://bugreports.qt.io/browse/QTBUG-98502),以在Android上实现两个函数的相同。 - m7913d

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接