Reputation: 2113
I'm writing a program in C++ using the Qt library. I would like to get current working directory of my program. I found the QDir::currentPath() and QCoreApplication::applicationDirPath() function but they give back the directory where the application executable is. I don't wanna get the directory that contains the application executable.
I have uploaded the image which describes the path that I want to get.
Does anyone has any solutions?
Thank you!
Upvotes: 12
Views: 41828
Reputation: 2098
The source code directory is available via qmake
variables and can "defined" for access within C++ source files:
# 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"));
Output:
Able to find main.cpp?... true
Upvotes: 1
Reputation: 5334
Your application cannot know where the project is, because this is a qt-creator option. If you want to run your binary in the project path you have to setup your working directory inside qt-creator to the correct path. Then QDir::currentPath()
will return the path you want to have.
goto: projects->[environment]->run->working directory
Upvotes: 14
Reputation: 4975
Checkout QCoreApplication::applicationDirPath(), it tries to figure out the directory the executable is in, rather than checking the current working directory
Upvotes: 3