单个应用程序实例,在一个窗口中进行数据刷新

时间:2012-12-13 05:42:07

标签: qt

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

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

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

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

简而言之,一个应用程序只有一个窗口,显示刷新的数据以及不同的调用。

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

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

就这样......

  1. A已在运行
  2. B现已推出
  3. B向A
  4. 发送消息
  5. A尝试使用此消息确认内容
  6. 如果消息为真(让我们说),请保持A运行并打开B作为新实例
  7. 如果不是...关闭B,让A使用此新信息刷新数据
  8. 这是否可以使用QtSingleApplication,尤其是第6步?或者,一旦检测到已经运行的实例,新实例是否会关闭?

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

    如果有人可以提供帮助,我将不得不承担责任。

1 个答案:

答案 0 :(得分:1)

您要找的是QtSingleApplication。当您再次调用应用程序时,可以检查QtSingleApplication::isRunning()以查看是否已存在其他实例。如果是这样,只需使用QtSingleApplication::sendMessage()警告第一个实例已调用某些内容。只需设置您的应用程序即可接收这些消息(您可以通过连接到QtSingleApplication::messageReceived()信号获知),并在收到该信号时做出相应的反应。