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

40

我运行了一个Qt应用程序,我想知道这个可执行文件的名称。

3个回答

99

我对其他评论认为这不是一个Qt问题的观点必须(部分)持有异议:Qt有一个方法QCoreApplication::applicationFilePath(),可以获取可执行文件的目录和文件名。

在Linux上,它将尝试使用/proc,在Windows上可能会使用GetModuleFileName()。根据文档,它将退回到argv[0]

然后,您可以使用QFileInfo将其拆分成可执行文件名称和目录。

QFileInfo(QCoreApplication::applicationFilePath()).fileName()

18
对于应用程序目录,您可以使用 QCoreApplication::applicationDirPath() - Cameron
3
我获得了这个错误信息:QCoreApplication::applicationFilePath: 请先实例化 QApplication 对象 - GuySoft
qApp->applicationFilePath(); - tvorez
谢谢@Cameron。我一直在找那个。:D - GeneCode
QApplication a(argc, argv); QString appPath = a.applicationFilePath(); - Neurotransmitter

3

QApplication解析命令行参数,第一个条目是可执行文件的名称 - 这与标准C中的argv [0]大致相同,但在Windows上有一些额外的复杂性,如果您使用Unicode构建或者应用程序作为服务启动。

请参见http://doc.qt.io/qt-5/qcoreapplication.html#arguments


-2

再次强调,这并不是一个Qt的问题。要找到执行的二进制文件的名称,可以使用以下命令:

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

2
我不确定你为什么关心它是否是一个Qt问题的相关性。OP只是陈述了他们正在使用的环境,与如果他们说“Linux”或Windows”或者“C++”没有任何区别。这是可以帮助定位答案的额外信息。在这种特殊情况下,这很有用,因为Qt提供了一种更好的方法来获取此信息-根据ISO标准,argv [0]不需要实际包含有关可执行文件的任何有用信息。请参见https://dev59.com/ZXE85IYBdhLWcg3wZyqt#2794171获取详细信息。 - paxdiablo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接