0

我在 Qt 中有一个应用程序。它是一个窗口。此窗口显示了某些数据。

此窗口是从另一个应用程序启动的。

应用程序很可能是从另一个应用程序的不同实例启动的,具有不同的数据。

假设我已经运行了一个应用程序实例,我如何确保如果再次调用该应用程序,它不应该启动另一个实例,而是应该使用新集合刷新现有窗口中的数据?

简而言之,一个应用程序有一个窗口,它显示与不同调用一起传递的刷新数据。

编辑:我检查了。应该足以解决我的问题。但是,我在 Qt 安装中找不到相关文件。我了解到它从来不是 Qt 解决方案的一部分,必须手动下载。如果是这种情况,是否会影响任何许可问题?

编辑2: 我有一个实例,比方说,A,应用程序已经打开。我尝试启动实例 B。B 向 A 发送消息。是否可以使用此消息检查 A 是否满足某些条件,然后决定是否打开 B?

像这样...

  1. A 已经在运行
  2. B现已推出
  3. B 向 A 发送消息
  4. A 尝试使用此消息确认某些内容
  5. 如果消息为真(假设),保持 A 运行并将 B 作为新实例打开
  6. 如果不是...关闭 B,并让 A 使用此新信息刷新数据

这是否可以使用 QtSingleApplication,尤其是第 6 步?或者新实例会在检测到已经运行的实例后立即关闭吗?

另外,如何在我的应用程序中集成 QtSingleApplication?我只需要包含标题和cpp吗?我不希望构建一个 dll 并像那样工作。是否需要其他配置?

如果有人可以提供帮助,我将不胜感激。

4

1 回答 1

1

您正在寻找的是QtSingleApplication。当您第二次调用该应用程序时,您可以检查QtSingleApplication::isRunning()另一个实例是否已经存在。如果是这样,只需使用QtSingleApplication::sendMessage()来提醒第一个实例已经调用了某些东西。只需将您的应用程序设置为能够接收这些消息(您可以通过连接到QtSingleApplication::messageReceived()信号来了解这些消息),并在您收到该信号时做出相应的反应。

于 2012-12-13T14:47:02.207 回答