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