Qt:如何在我的 qt 程序中从桌面打开一个文本文件?

Qt: how do I open a text file from desktop in my qt program?

我希望能够双击桌面上的文本文件,或者 select 我的应用程序通过 window 的打开方式...,并在中打开该文件我的申请,无论我的申请是否已经 运行。我该怎么做?

当使用 Windows 打开时,Windows 会将文本文件路径作为参数传递给您的应用程序。此路径可以在 QCoreApplication::arguments().

中检索

已经是运行的应用再打开,肯定有很多解决办法。这个可能不是最好的也不是最简单的,但应该可以。

  1. 无论如何我想你的申请将被启动第二次。但是您可以通过使用 Windows API 或通过在 QProcess 中调用“tasklist.exe”,读取结果并检查是否找到您的应用程序来检测到这一点 name.exe在返回的文本中。如果是,你应该告诉第一个实例打开文件,然后退出第二个实例。
  2. 要让您的第一个实例从第二个实例打开该文件,您需要在不同的实例之间进行对话。一种方法可能是使用 QUdpSocket。如果第 1 步告诉您没有其他实例是 运行,那么它就是您的主实例,因此您创建一个 QUdpSocket 并监听定义的本地端口(例如 12345)以获取包含要打开的文件的消息。否则,如果它是你的第二个实例,你创建一个 QUdpSocket 并写入上面定义的本地端口,然后你退出。在第一种情况下,当您收到包含要打开的文件的数据包(=数据报)时,您将其打开。