【问题标题】:Qt: Telling a program to read other files from the same directory as it's placed inQt:告诉程序从与其所在目录相同的目录中读取其他文件
【发布时间】:2014-05-18 20:33:06
【问题描述】:

我有一个程序将几个不同的文件作为输入。
我只知道这些文件将与我的程序位于同一个文件夹中(我知道它们的名称)。

有没有办法写一个文件的路径只知道它的名字,并且它将与主程序在同一个文件夹中?

【问题讨论】:

  • ITT 一个程序是一个“他”。
  • 您不想获取可执行文件实际存储的目录路径吗?从main() 参数中检查argv[0] 会很幸运。
  • @πάνταῥεῖ:当不使用可执行文件的绝对路径时,这真的行不通。
  • @LaszloPapp 这就是为什么我说 '你会很幸运......' ;) 你可以解析 PATH 变量内容。

标签: c++ qt qtcore qfile qcoreapplication


【解决方案1】:

如果您确定文件在您的程序的同一文件夹中,您可以使用:

QCoreApplication::applicationFilePath()

【讨论】:

    【解决方案2】:

    您正在从 QCoreApplication 中寻找这些。

    QString QCoreApplication::applicationDirPath() [static]

    返回包含应用程序可执行文件的目录。

    例如,如果您在 C:\Qt 目录中安装了 Qt,并且您运行 regexp 示例,则此函数将返回“C:/Qt/examples/tools/regexp”。

    在 Mac OS X 上,这将指向实际包含可执行文件的目录,该目录可能位于应用程序包内(如果应用程序已捆绑) 警告:在 Linux 上,此函数将尝试从 /proc 文件系统获取路径。如果失败,则假定 argv[0] 包含可执行文件的绝对文件名。该函数还假定当前目录没有被应用程序更改。

    QString QCoreApplication::applicationFilePath() [static]

    返回应用程序可执行文件的文件路径。

    例如,如果您在 /usr/local/qt 目录中安装了 Qt,并且您运行 regexp 示例,则此函数将返回“/usr/local/qt/examples/tools/regexp/regexp”。

    警告:在 Linux 上,此函数将尝试从 /proc 文件系统获取路径。如果失败,则假定 argv[0] 包含可执行文件的绝对文件名。该函数还假定当前目录没有被应用程序更改。

    根据您的具体用例,您可以使用其中一个,如果您希望获得可执行路径+附加的其他文件,则可能是前者。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-02
      • 2011-12-24
      • 2021-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-26
      相关资源
      最近更新 更多