如何使用Qt确定可执行文件的目录?

尼基塔(Tsunsky Nikita)

我需要打开配置文件。配置文件的位置是exe文件所在的目录。基本上,我怎么能得到这个位置?

我尝试使用QDir,但未打开文件时,当前代码返回错误。

QString cfg_name = QDir::currentPath() + "config.cfg";
QFile File(cfg_name);
if (File.open(QIODevice::ReadOnly))
{
    QTextStream in(&File);
    int elementId;
    while (!in.atEnd())
    {
        QString line = in.readLine();
        filename[elementId] = line;
        elementId++;
    }
}
else
{
    QMessageBox msgBox;
    msgBox.setText("Can't open configuration file!");
    msgBox.exec();
}
File.close();
乔蒂克

使用QCoreApplication::applicationDirPath()代替QDir::currentPath()

QCoreApplication::applicationDirPath()返回QString带有包含应用程序可执行文件的目录路径的,而QDir::currentPath()返回QString带有当前运行进程的当前目录的绝对路径的。

此“当前目录”通常不是可执行文件所在的位置,而是从其执行的位置。最初,它被设置为执行该应用程序的进程的当前目录。当前目录也可以在应用程序生命周期中进行更改,并且主要用于在运行时解析相对路径。

因此,在您的代码中:

QString cfg_name = QDir::currentPath() + "/config.cfg";
QFile File(cfg_name);

应该打开与

QFile File("config.cfg");

但是你可能只想

QFile File(QCoreApplication::applicationDirPath() + "/config.cfg");

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Windows如何确定要运行的可执行文件

如何使可执行文件独立于项目目录

如何返回给定可执行文件的目录?

获取使用哪个可执行文件的目录

使用Qt5查找可执行文件

如何使用批处理文件查找可执行文件的目录

如何使用gdb单步执行可执行文件?

如何使用Clion调试外部可执行文件

如何使用“查找”仅查找可执行文件?

如何使用Maven构建GO可执行文件

如何使用 C++ 输出可执行文件

如何使用 csc 指定可执行文件的名称?

如何使用 dlopen() 获取可执行文件路径

Python-启动可执行文件,浏览到目录,然后单击“确定”

如何安装可执行文件

如何查找可执行文件

可执行文件目录与可执行文件之间的区别

Git:使用可执行文件

如何获取已编译的python(使用cxFreeze)以将当前工作目录作为可执行文件所在的目录?

不管可执行文件的位置如何,如何使用相对路径访问项目目录中的文件?

如何列出Linux中的所有可执行文件(目录,子目录,$ PATH)?

如何在执行之前通过命令行设置可执行文件的工作目录?

如何在不使用 cd 或修改 PATH 的情况下从不同目录运行可执行文件?

如何知道调用shell目录的路径并在我的python可执行文件中使用它

使用与当前可执行文件相同的可执行文件启动Java进程

“使用回滚可执行文件”不强制设置可执行文件

如何从页眉和页脚确定PE可执行文件的大小

如何确定Graphviz可执行文件在系统的PATH中?

如何确定是否从活动 shell 中启动了可执行文件?