qt只能运行单个实例的解决方案

介绍使用Qt的库实现的「只能运行单个实例的解决方案」。

源码地址

https://github.com/qtproject/qt-solutions/tree/master/qtsingleapplication

基本原理

  • 使用文件读写锁+QLocalServer创建服务端/客户端实现。
  • 第一次运行实例QtSingleApplication将会创建一个本地服务端,而第二次运行的QtSingleApplication将会创建客户端即触发重复创建实例的行为。

使用方法

  • qtsingleapplication目录复制到你的项目工程下;
  • 在你的项目工程文件中添加以下代码:
include(qtsingleapplication/src/qtsingleapplication.pri)
  • 代码简单使用:
#include "qtsinglecoreapplication.h"
int main(int argc, char *argv[])
{
    QtSingleApplication a(argc, argv);
    /* 判断实例是否已运行 */
    if(a.isRunning())
    {
        ...
    }
        ...
}

关于QtSingleApplication

  • QtSingleApplication类继承于QApplication
  • setActivationWindow用于设置需要激活的某个窗口;
  • activateWindow激活预先设置好的某个窗口。
  • sendMessage信号为发送消息给第一次创建的实例(由第二次创建实例发出)。
  • messageReceived槽函数用于接收第二次创建实例的消息。

作者:

喜欢围棋和编程。

 
发布于 分类 编程标签

发表评论

电子邮件地址不会被公开。