2013-02-20 250 views
2

我正在将一个配置文件(包含文件名(相对于当前目录))的配置文件移植到Qt。当我在QtCreator中运行/调试GUI时,似乎无法从工作目录加载文件。QtCreator中的相对路径

假设我的文件系统如下:

C:/MyProjectSource 
C:/MyProjectSource-Desktop-Debug // <-- created by QtCreator 
C:/MyProjectSource-Desktop-Debug/debug/MyProgram.exe // <- my program 
C:/MyProjectSource-Desktop-Debug/debug/params.txt // <- program's config 
C:/MyProjectSource-Desktop-Debug/debug/cfg/file1.txt // <- extra file 
C:/MyProjectSource-Desktop-Debug/debug/cfg/file2.txt // <- extra file 

params.txt看起来像

# other setting  
... 
cfg/file1.txt  # at this line, program crash, saying cannot open file 
cfg/file2.txt 
... 
# other setting  

代码读取FILE1.TXT

std::ifstream ifs(filename); // <-- @runtime, filename = 'cfg/file1.txt' 
if (!ifs) 
{ 
    // failed inside QtCreator, but fine when start from explorer 
    EMSG_OPENFILE(filename); 
    exit(-1); 
} 

基准:不改变控制台程序如果可能的话。那么,如何告诉QtCreator了解相对路径?或者我应该在params.txt内强制执行绝对路径?谢谢。

平台:QtCreator 2.6.1,Qt4.8,MinGW64,Win 7的

回答

4

的相对路径是相对于当前的工作目录不是在可执行文件所在的目录,所以你需要改变当前的工作目录可执行文件的目录,只要加入该行的主要功能后:

QDir::setCurrent(QCoreApplication::applicationDirPath()); 

如果您需要设置从Qt Creator的当前工作目录: 项目 - >运行 - >你会看到工作目录文本框中

enter image description here

然后将此路径从浏览按钮更改为您的可执行位置按钮