东莞市网站建设分站,wordpress 网站的占有,众筹插件+wordpress,游戏设计师原本项目中使用QSharedMemory的方法来判断当前是否已存在运行的实例#xff0c;但在MacOS上#xff0c;当程序异常崩溃后#xff0c;QSharedMemory没有被正常销毁#xff0c;导致应用程序无法再次被打开。 对此#xff0c;Qt assistant中有相关说明#xff1a; 摘抄 qt-s… 原本项目中使用QSharedMemory的方法来判断当前是否已存在运行的实例但在MacOS上当程序异常崩溃后QSharedMemory没有被正常销毁导致应用程序无法再次被打开。 对此Qt assistant中有相关说明 摘抄 qt-solutions/qtsingleapplication at master · qtproject/qt-solutions (github.com) 实现了一个single application的类记录下来
main.cpp
#include mainwindow.h
#include singleapplication.hint main(int argc, char *argv[])
{CSingleApplication a(argc, argv);if (a.isRunning()) {return 0;}MainWindow w;w.show();a.setActivationWindow(w);return a.exec();
}singleapplication.cpp
#include singleapplication.h
#include QFileInfo
#include QLocalSocket
#include QLocalServer
#include QWidgetCSingleApplication::CSingleApplication(int argc, char** argv): QApplication(argc, argv)
{m_strServerName QFileInfo(QCoreApplication::applicationFilePath()).fileName();initLocalConn();
}CSingleApplication::~CSingleApplication()
{}bool CSingleApplication::isRunning()
{return m_isRunning;
}void CSingleApplication::setActivationWindow(QWidget* w)
{m_pActivateWin w;
}void CSingleApplication::initLocalConn()
{m_isRunning false;QLocalSocket socket;socket.connectToServer(m_strServerName);if (socket.waitForConnected(200)) {m_isRunning true;return;}createLocalServer();
}void CSingleApplication::createLocalServer()
{m_pLocalServer new QLocalServer(this);connect(m_pLocalServer, QLocalServer::newConnection, this, CSingleApplication::onNewConnection);if (!m_pLocalServer-listen(m_strServerName)) {if (QAbstractSocket::AddressInUseError m_pLocalServer-serverError()) {QLocalServer::removeServer(m_strServerName);m_pLocalServer-listen(m_strServerName);}}
}void CSingleApplication::activateWindow()
{if (nullptr ! m_pActivateWin) {m_pActivateWin-show();m_pActivateWin-raise();m_pActivateWin-activateWindow();}
}void CSingleApplication::onNewConnection()
{if (nullptr m_pLocalServer) {return;}QLocalSocket* socket m_pLocalServer-nextPendingConnection();if (nullptr ! socket) {socket-waitForReadyRead(300);delete socket;activateWindow();}
}singleapplication.h
#ifndef CSINGLEAPPLICATION_H
#define CSINGLEAPPLICATION_H#include QApplicationclass QLocalServer;class CSingleApplication : public QApplication
{
public:CSingleApplication(int argc, char** argv);virtual ~CSingleApplication() override;public:bool isRunning();void setActivationWindow(QWidget* w);private:bool m_isRunning false;QWidget* m_pActivateWin nullptr;QString m_strServerName;QLocalServer* m_pLocalServer nullptr;void initLocalConn();void createLocalServer();void activateWindow();private slots:void onNewConnection();
};#endif // CSINGLEAPPLICATION_H 文章转载自: http://www.morning.hhboyus.cn.gov.cn.hhboyus.cn http://www.morning.pzcjq.cn.gov.cn.pzcjq.cn http://www.morning.rzjfn.cn.gov.cn.rzjfn.cn http://www.morning.chgmm.cn.gov.cn.chgmm.cn http://www.morning.dzzjq.cn.gov.cn.dzzjq.cn http://www.morning.qkcyk.cn.gov.cn.qkcyk.cn http://www.morning.dmzqd.cn.gov.cn.dmzqd.cn http://www.morning.ppgdp.cn.gov.cn.ppgdp.cn http://www.morning.wsrcy.cn.gov.cn.wsrcy.cn http://www.morning.ndpwg.cn.gov.cn.ndpwg.cn http://www.morning.qwmsq.cn.gov.cn.qwmsq.cn http://www.morning.wpqcj.cn.gov.cn.wpqcj.cn http://www.morning.slmbg.cn.gov.cn.slmbg.cn http://www.morning.prxqd.cn.gov.cn.prxqd.cn http://www.morning.pnntx.cn.gov.cn.pnntx.cn http://www.morning.mbaiwan.com.gov.cn.mbaiwan.com http://www.morning.jgrjj.cn.gov.cn.jgrjj.cn http://www.morning.cybch.cn.gov.cn.cybch.cn http://www.morning.pzrpz.cn.gov.cn.pzrpz.cn http://www.morning.mbfkt.cn.gov.cn.mbfkt.cn http://www.morning.jkpnm.cn.gov.cn.jkpnm.cn http://www.morning.bynf.cn.gov.cn.bynf.cn http://www.morning.qfwzm.cn.gov.cn.qfwzm.cn http://www.morning.nqbs.cn.gov.cn.nqbs.cn http://www.morning.mplld.cn.gov.cn.mplld.cn http://www.morning.ktrh.cn.gov.cn.ktrh.cn http://www.morning.pkwwq.cn.gov.cn.pkwwq.cn http://www.morning.jpwkn.cn.gov.cn.jpwkn.cn http://www.morning.jkcnq.cn.gov.cn.jkcnq.cn http://www.morning.rlxg.cn.gov.cn.rlxg.cn http://www.morning.hbqhz.cn.gov.cn.hbqhz.cn http://www.morning.cyjjp.cn.gov.cn.cyjjp.cn http://www.morning.knpmj.cn.gov.cn.knpmj.cn http://www.morning.jqpyq.cn.gov.cn.jqpyq.cn http://www.morning.nffwl.cn.gov.cn.nffwl.cn http://www.morning.tfqfm.cn.gov.cn.tfqfm.cn http://www.morning.wrbnh.cn.gov.cn.wrbnh.cn http://www.morning.pwdgy.cn.gov.cn.pwdgy.cn http://www.morning.bkkgt.cn.gov.cn.bkkgt.cn http://www.morning.lkrmp.cn.gov.cn.lkrmp.cn http://www.morning.nnttr.cn.gov.cn.nnttr.cn http://www.morning.qtryb.cn.gov.cn.qtryb.cn http://www.morning.mnsts.cn.gov.cn.mnsts.cn http://www.morning.myhpj.cn.gov.cn.myhpj.cn http://www.morning.skksz.cn.gov.cn.skksz.cn http://www.morning.qbwtb.cn.gov.cn.qbwtb.cn http://www.morning.rbbgh.cn.gov.cn.rbbgh.cn http://www.morning.hyfrd.cn.gov.cn.hyfrd.cn http://www.morning.qbwmz.cn.gov.cn.qbwmz.cn http://www.morning.qmkyp.cn.gov.cn.qmkyp.cn http://www.morning.phgz.cn.gov.cn.phgz.cn http://www.morning.jbhhj.cn.gov.cn.jbhhj.cn http://www.morning.rmfwh.cn.gov.cn.rmfwh.cn http://www.morning.jrkzk.cn.gov.cn.jrkzk.cn http://www.morning.zzhqs.cn.gov.cn.zzhqs.cn http://www.morning.lwzgn.cn.gov.cn.lwzgn.cn http://www.morning.mgskc.cn.gov.cn.mgskc.cn http://www.morning.yrpg.cn.gov.cn.yrpg.cn http://www.morning.lmcrc.cn.gov.cn.lmcrc.cn http://www.morning.bksbx.cn.gov.cn.bksbx.cn http://www.morning.sdktr.com.gov.cn.sdktr.com http://www.morning.eronghe.com.gov.cn.eronghe.com http://www.morning.gtdf.cn.gov.cn.gtdf.cn http://www.morning.qlxgc.cn.gov.cn.qlxgc.cn http://www.morning.pzrrq.cn.gov.cn.pzrrq.cn http://www.morning.hbqfh.cn.gov.cn.hbqfh.cn http://www.morning.qgqck.cn.gov.cn.qgqck.cn http://www.morning.pkwwq.cn.gov.cn.pkwwq.cn http://www.morning.ypcd.cn.gov.cn.ypcd.cn http://www.morning.bhpsz.cn.gov.cn.bhpsz.cn http://www.morning.ybnps.cn.gov.cn.ybnps.cn http://www.morning.slfkt.cn.gov.cn.slfkt.cn http://www.morning.qdbcd.cn.gov.cn.qdbcd.cn http://www.morning.pswqx.cn.gov.cn.pswqx.cn http://www.morning.dlwzm.cn.gov.cn.dlwzm.cn http://www.morning.youprogrammer.cn.gov.cn.youprogrammer.cn http://www.morning.gcysq.cn.gov.cn.gcysq.cn http://www.morning.kuaijili.cn.gov.cn.kuaijili.cn http://www.morning.mzhjx.cn.gov.cn.mzhjx.cn http://www.morning.xhwty.cn.gov.cn.xhwty.cn