Qt how to open a file in current dir ? or what's wrong with this?
Try to use QCoreApplication::applicationDirPath() instead of QDir::currentPath().
For details see http://doc.qt.io/qt-5/qcoreapplication.html#applicationDirPath
Check the returned value of QDir::currentPath()
. I think when you run from Qt Creator, it returns the path where the project file (*.pro) is located. When you run from outside, you get path of the binary.
Edit
I never worked with Linux. However, you can try other functions/combinations from QDir
:
- QDir::current().path()
- QDir::current().absolutePath()
etc.
To open a file in the current directory, you simply call QFile constructor
I tested this on my Linux machine and it works
#include <QtCore>
int main(int argc, char** argv){
QFile some_file("test.xml");
if(!some_file.open(QIODevice::ReadOnly | QIODevice::Text)){
qDebug() << "Unable to open file";
} else {
qDebug() << "File open successfully";
}
exit(-1);
}
I run ./TestQFile and if there is a test.xml in the current directory, it works.
UPDATE: I notice that the wording of your question says that you want the file in the same directory as the executable, this can be done as follow:
// Getting directory of the executable
QFileInfo exec_fileinfo(argv[0]);
qDebug() << "Executable is in" << exec_fileinfo.absolutePath();
UPDATE 2: Under the project panel of QtCreator, there is a field for Working Directory. This is the directory that is returned by QDir::currentPath() if you are running it via QtCreator.