我有一个带有可执行文件的应用程序,它位于somwhere / appDir / bin中。我希望它打开somwhere / appDir / data中的文件。它在Win7,Win8和Vista上运行良好,但在XP上失败。我的代码是:
QString dirPath = QCoreApplication::applicationDirPath();
QFile* src;
src = new QFile(dirPath + "/../data/file.txt");
qDebug()<<src->exists();
执行到达src->exists()
时,应用程序崩溃。当路径中没有..
时,一切正常。为什么?除了从路径字符串中删除目录名之外,还有其他方法可以访问父目录吗?
答案 0 :(得分:0)
您可以从dirPath中删除最后一个目录名。
QStringList dirPathSplitted = dirPath.split("/");
dirPathSplitted.removeLast();
QString dirPath = dirPathSplitted.join("/");
src = new QFile(dirPath + "/data/file.txt");
我不知道这是否是最佳解决方案,但它可能有效。如果它不能仅在WinXP上运行,则可能是一个错误。您可以考虑报告它。但如果上面的内容适用于XP,它也应该适用于其他人。