我正在尝试使用Qt的storageLocation函数获取Linux下的应用程序数据文件夹位置:

QDesktopServices::storageLocation(QDesktopServices::DataLocation)

但是此函数返回的路径末尾有两个斜杠:
 /home/user/.local/share/data//

路径末尾的两个斜杠对我来说很奇怪。这正常吗?还是这是Qt中的错误?
我的Linux是Ubuntu。
Qt版本是4.8.1。

最佳答案

这是Qt中的错误(请参阅bug report)。但是,只有在未设置应用程序名称和组织名称的情况下,它才会发生。您应该使用QApplication::setApplicationNameQApplication::setOrganizationName设置它们。

您先前接受的chop解决方案很糟糕,原因有二。首先,如果此错误已修复,则您的代码可能会损坏。谁知道下一个版本中可能有多少个斜线(也许是0)。我建议使用以下命令删除双斜杠:

QString s = QDesktopServices::storageLocation(QDesktopServices::DataLocation);
s = QDir(s).absolutePath();

但是,更重要的是/home/user/.local/share/data/位置仍然无效。如果要获得正确的位置,则需要设置应用程序和组织名称。简单删除尾部斜杠并不能解决任何问题,这只是一个肮脏的技巧。

10-04 16:36