在很多实现中,在使用 QSharedMemory 检测程序是否运行的同时,还会使用 QLocalSocket 来通知界面来进行显示。但在一些项目中,并不需要这个逻辑。因此删除了 QLocalSocket 相关的代码。
代码如下:
// main.cpp
#include "SingleApplication.h"
int main(int argc, char *argv[])
{
// ...
SingleApplication single("pers.kyno.bp.userapp");
if (!single.run())
{
return 0;
}
// ...
}
SingleApplication 的实现为:
// SingleApplication.h
#ifndef SingleApplication_H
#define SingleApplication_H
#include <QObject>
class QSharedMemory;
class SingleApplication : public QObject
{
Q_OBJECT
public:
SingleApplication(const QString &key);
virtual ~SingleApplication();
public:
bool run();
private:
QSharedMemory *_memory;
};
#endif // SingleApplication_H
// SingleApplication.cpp
#inclu