如何在Qt中获取可执行文件名称

Fra*_*ank 38 qt

我运行一个Qt应用程序,我想知道的是这个运行的二进制文件名.

And*_*dré 93

我必须(部分地)不同意其他评论它不是Qt问题:有一个Qt方法QCoreApplication::applicationFilePath()给出了可执行文件的目录+文件名.

在Linux上,这将尝试使用/proc,也许在Windows上GetModuleFileName().根据文件,它将回归argv[0].

然后,您可以使用QFileInfo它将其拆分为可执行文件名和目录.

QFileInfo(QCoreApplication::applicationFilePath()).fileName()
Run Code Online (Sandbox Code Playgroud)

  • +1.对于应用程序目录,您可以使用`QCoreApplication :: applicationDirPath()`. (17认同)
  • 我得到了:``QCoreApplication :: applicationFilePath:请首先实例化QApplication对象`` (3认同)

St0*_*ner -2

这又不是一个真正的 Qt 问题。要查找执行的二进制文件的名称,它会是这样的。

#include <iostream>
using namespace std;
int main(int argc, char **argv)
{
  cout << argv[0] << endl;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

  • 我不确定为什么你担心它是一个 Qt 问题是相关的。OP 只是简单地说明他们正在使用的环境,与他们说“Linux”或“Windows”或“C++”没有什么不同。这是可以帮助确定答案的额外信息。在这种特殊情况下,它很有用,因为 Qt 提供了一种更好的方法来获取此信息 - 根据 ISO 标准,不需要“argv[0]”来实际保存有关可执行文件的“任何”有用信息。请参阅 http://stackoverflow。 com/questions/2794150/when-can-argv0-have-null/2794171#2794171 了解详细信息。 (2认同)