相对文件path的差异:Qt Creator的debugging模式和释放模式

QFile file("test.txt"); if (file.open(QIODevice::ReadOnly)) { qDebug()<<"You got me."; } 

我在用:

  • Qt 4.8.6与MSVC 2010
  • Qt Creator 3.1.1
  • Windows 7(32位)

从上面的代码, 如果.pro文件没有被改变 ,相应的build目录

对于debugging模式

 D:\...\build-Main-MSVC2010-Debug 

并且debugging模式的.exe将位于

 D:\...\build-Main-MSVC2010-Debug\debug 

对于发布模式

 D:\...\build-Main-MSVC2010-Release 

并且释放模式的.exe将位于

 D:\...\build-Main-MSVC2010-Release\release 

[题]

如果我想让发布程序读取“test.txt”文件,我把文件放在文件夹中

 D:\...\build-Main-MSVC2010-Release\release 

这是有道理的。

但是,如果我想让debugging程序读取“test.txt”文件,我必须把文件放在文件夹中

 D:\...\build-Main-MSVC2010-Debug\ 

而不是

 D:\...\build-Main-MSVC2010-Debug\debug 

我想知道为什么相对的文件path在debugging和发布模式下工作不同,它一直困扰我很长一段时间。


[编辑]

感谢@Paul和@lpapp。 以下是工作目录的截图:

debugging: 在这里输入图像说明

发布: 在这里输入图像说明


[非常重要的编辑]

对于@Paul和@lpapp:

我以前需要将.dll复制到release文件夹才能testing运行时间,而我只是发现如果我通过Qt Creator执行发布程序 ,那么工作目录就像你所说的那样工作。 但是,如果我直接点击发布文件夹中的.exe,情况将如我在问题中所说的那样。 我认为从Qt Creator运行程序和直接执行程序可能会有所不同。

Solutions Collecting From Web of "相对文件path的差异:Qt Creator的debugging模式和释放模式"

这取决于你的程序的当前工作目录。 您可以在“项目” – >“运行设置” – >“运行” – >“工作目录”中进行更改。

在这里输入图像说明

如果我通过Qt Creator执行发布程序,工作目录就像你说的那样工作。 但是,如果我直接点击发布文件夹中的.exe,情况将如我在问题中所说的那样。

这是因为当您单击发布foder中的.exe时,该文件夹是该程序的工作目录。 从Qt Creator运行程序时,Qt Creator会明确设置工作目录。 您可以将工作目录覆盖为创建.exe文件的目录,因此无论您是从Qt Creator运行程序还是只需单击资源管理器中的.exe文件,