如何获取 Qt 应用程序的当前工作目录路径?

Posted

技术标签:

【中文标题】如何获取 Qt 应用程序的当前工作目录路径?【英文标题】:How to get current working directory path of a Qt application? 【发布时间】:2013-07-15 04:17:48 【问题描述】:

我正在使用 Qt 库用 C++ 编写程序。我想获取我的程序的当前工作目录。我找到了 QDir::currentPath()QCoreApplication::applicationDirPath() 函数,但它们返回了应用程序可执行文件所在的目录。我不想获取包含应用程序可执行文件的目录。

我已经上传了描述我想要获取的路径的图片。

有人有解决办法吗?

谢谢!

【问题讨论】:

在路径/文件夹中看不到可执行文件。 我想要可执行文件而不想要二进制文件是什么意思? QDir::currentPath() 当前应用目录。它不是包含可执行文件的目录,除非这两个目录碰巧相同。这就是您的情况,因为 Creator 以这种方式启动可执行文件。 【参考方案1】:

您的应用程序无法知道项目在哪里,因为这是一个 qt-creator 选项。如果要在项目路径中运行二进制文件,则必须将工作目录 inside qt-creator 设置为正确的路径。然后QDir::currentPath()会返回你想要的路径。

转到:项目->[环境]->运行->工作目录

【讨论】:

感谢您的快速回复。我明白你的回答。【参考方案2】:

Checkout QCoreApplication::applicationDirPath(),它会尝试找出可执行文件所在的目录,而不是检查当前工作目录

【讨论】:

【参考方案3】:

源代码目录可通过qmake 变量获得,并且可以“定义”以在 C++ 源文件中访问:

# Demo.pro:
# set PROJECT_PATH to the "project path" with a trailing slash
DEFINES += PROJECT_PATH=\"\\\"$$_PRO_FILE_PWD_/\\\"\"

// mainwindow.cpp
qDebug() << "Able to find main.cpp?..." 
         << QFile::exists(PROJECT_PATH "main.cpp"));

输出:

Able to find main.cpp?... true

【讨论】:

以上是关于如何获取 Qt 应用程序的当前工作目录路径?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Objective-C 中获取当前工作目录的绝对路径?

如何获取 Xcode Playground 的当前工作目录?

Qt学习总结(C鱼)之路径参数引用

Qt软件开发_解决中文路径无法识别问题

Qt软件开发_解决中文路径无法识别问题

如何获取当前工作目录路径 c#?