2015-02-05 57 views
-1

我的应用程序的可执行文件驻留在somwhere/appDir/bin中。我希望它打开somwhere/appDir/data中的文件。它在Win7,Win8和Vista上运行良好,但在XP上失败。我的代码是:当执行到达src->exists()../的路径无法在win XP和Qt上运行

QString dirPath = QCoreApplication::applicationDirPath(); 
QFile* src;  
src = new QFile(dirPath + "/../data/file.txt"); 
qDebug()<<src->exists(); 

应用程序崩溃。当路径中没有..时,一切正常。为什么?除了从路径字符串中剥离目录名之外,还有其他方法可以到达父目录吗?

回答

0

您可以从dirPath中删除最后一个目录名称。

QStringList dirPathSplitted = dirPath.split("/"); 
dirPathSplitted.removeLast(); 
QString dirPath = dirPathSplitted.join("/"); 
src = new QFile(dirPath + "/data/file.txt"); 

我不知道这是否是最好的解决方案,但它可能工作。如果它不适用于WinXP,它可能是一个错误。你可能会考虑报告它。但是,如果以上在XP上工作,它也应该在其他人上工作。