一、概述
基于 qtsingleapplication 实现的单实例运行,csdn和其他平台都有相关的帖子,但是大部分 qtsingleapplication 的版本没有支持Qt5.5,编译的时候各种报错。
在此呈上最新版的 qtsingleapplication 的Git下载地址:git://code.qt.io/qt-solutions/qt-solutions.git
二、实现
1. pro文件加上:
QT += network
如果没有加上network模块,则会出现大量编译报错。
还要加上:
include(./qtsingleapplication/qtsingleapplication.pri)
2. 把 qtsingleapplication文件夹 放到pro文件的同级目录下
3.代码
#include "mainwindow.h"
//#include <QApplication>
#include <QtSingleApplication>
int main(int argc, char *argv[])
{
QtSingleApplication a("MyClient", argc, argv);
if(a.isRunning())//判断实例是否已经运行
{
a.sendMessage("MyClient_Active", 1); //1ms后激活前个实例
return EXIT_SUCCESS;
}
MainWindow w;
a.setActivationWindow(&w, true);
w.show();
return a.exec();
}
4. qmake,构建,尝试启动多个程序
(此处省略测试结果......其实就是懒,睡了睡了)