源码地址
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
槽函数用于接收第二次创建实例的消息。