我正在尝试使用Qt的storageLocation函数获取Linux下的应用程序数据文件夹位置:
QDesktopServices::storageLocation(QDesktopServices::DataLocation)
但是此函数返回的路径末尾有两个斜杠:
/home/user/.local/share/data//
路径末尾的两个斜杠对我来说很奇怪。这正常吗?还是这是Qt中的错误?
我的Linux是Ubuntu。
Qt版本是4.8.1。
最佳答案
这是Qt中的错误(请参阅bug report)。但是,只有在未设置应用程序名称和组织名称的情况下,它才会发生。您应该使用QApplication::setApplicationName
和QApplication::setOrganizationName
设置它们。
您先前接受的chop
解决方案很糟糕,原因有二。首先,如果此错误已修复,则您的代码可能会损坏。谁知道下一个版本中可能有多少个斜线(也许是0)。我建议使用以下命令删除双斜杠:
QString s = QDesktopServices::storageLocation(QDesktopServices::DataLocation);
s = QDir(s).absolutePath();
但是,更重要的是
/home/user/.local/share/data/
位置仍然无效。如果要获得正确的位置,则需要设置应用程序和组织名称。简单删除尾部斜杠并不能解决任何问题,这只是一个肮脏的技巧。