Tan Viet
Tan Viet

Reputation: 2113

How to get current working directory path of a Qt application?

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.

enter image description here

Does anyone has any solutions?

Thank you!

Upvotes: 12

Views: 41828

Answers (3)

pixelgrease
pixelgrease

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

user1810087
user1810087

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

ted
ted

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

Related Questions