QFile file("test.txt");
if (file.open(QIODevice::ReadOnly)) {
qDebug()<<"You got me.";
}
我正在使用:
从上面的代码如果.pro
文件尚未更改,相应的构建目录
调试模式:
D:\...\build-Main-MSVC2010-Debug
并且调试模式的.exe
将位于
D:\...\build-Main-MSVC2010-Debug\debug
发布模式:
D:\...\build-Main-MSVC2010-Release
并且发布模式的.exe
将位于
D:\...\build-Main-MSVC2010-Release\release
如果我想要发布程序来阅读&#34; test.txt&#34;文件,我把文件放在文件夹
D:\...\build-Main-MSVC2010-Release\release
这是有道理的。
但如果我想要调试程序来阅读&#34; test.txt&#34;文件,我必须把文件放在文件夹
D:\...\build-Main-MSVC2010-Debug\
而不是
D:\...\build-Main-MSVC2010-Debug\debug
我想知道为什么相对文件路径在debug&amp;发布模式,很长一段时间一直困扰着我。
感谢@Paul和@lpapp。以下是工作目录的屏幕截图:
调试:
推出:
对于@Paul和@lpapp:
我曾经将所需的.dll
复制到release文件夹来测试运行时,我刚刚找到如果我通过Qt Creator执行发布程序,工作目录就会像你说。但是,如果我直接单击release文件夹中的.exe,情况就像我在问题中所说的那样。我认为从Qt Creator运行程序和直接执行程序之间可能存在差异。
答案 0 :(得分:1)
这取决于程序的当前工作目录。您可以在项目 - >运行设置 - >运行 - >工作目录中更改它。
如果我通过Qt Creator执行发布程序,工作目录就会像你说的那样工作。但是,如果我直接单击release文件夹中的.exe,情况就像我在问题中所说的那样。
这是因为当您单击release foder中的.exe时,该文件夹是该程序的工作目录。从Qt Creator运行程序时,Qt Creator会明确设置工作目录。您可以将工作目录覆盖为创建.exe文件的目录,这样无论您是从Qt Creator运行程序还是仅在资源管理器中单击.exe,都没有区别。