【问题标题】:How to get executable name in Qt如何在 Qt 中获取可执行文件名
【发布时间】:2010-12-23 03:12:30
【问题描述】:

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

【问题讨论】:

    标签: qt


    【解决方案1】:

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

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

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

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

    【讨论】:

    • +1。而对于应用目录,可以使用QCoreApplication::applicationDirPath()
    • 我得到了:QCoreApplication::applicationFilePath: Please instantiate the QApplication object first
    • qApp->applicationFilePath();
    • 谢谢@Cameron。正在寻找那个。 :D
    • QApplication a(argc, argv); QString appPath = a.applicationFilePath();
    【解决方案2】:

    Qapplication 解析命令行参数,第一个条目是可执行文件的名称 - 这与标准 C 中的 argv[0] 大致相同,但如果您有 Unicode 构建或应用程序作为服务启动

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 我不确定为什么您担心它是一个 Qt 问题是相关的。 OP 只是说明他们正在使用的环境,与他们是否说“Linux”或 Windows“或者就此而言,“C++”没有什么不同。这是可以帮助确定答案的额外信息。在这种特殊情况下,它很有用,因为 Qt 提供了一种非常 更好的方式来获取此信息 - 根据 ISO 标准,argv[0] 不需要实际保存有关可执行文件的任何 有用信息。详情请见stackoverflow.com/questions/2794150/when-can-argv0-have-null/…
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多