使用QLocalServer和QLocalSocket类 下面是自已的写的代码,主要是在运行第二实例的时候,有一个提示的作用: 1. 切换到当前程序,并将当前程序最大化显示到前面。 PSA_USR_LOGIN_H #define PSA_USR_LOGIN_H #include <QDialog> #include <QTimeLine> #include <QLocalServer IsServerRun(mServerName)) { mpServer = new QLocalServer; QLocalServer::removeServer QSingleApplication类 实现原理应该和QLocalServer和QLocalSocket相同。 使用Qt中的QSharedMemory,QLocalServer和QLocalSocket实现(不过需要在你的.pro里加上QT += network) 具体说明可以参考:
QLocalSocket 连接的是本地服务 QLocalSocket 专门用于本地进程间通信(IPC),它连接的是在同一台机器上运行的本地服务器(通常是通过 QLocalServer 创建的)。 connectToServer("component_bridge"); 守护进程与客户端通信 // 客户端与本地守护进程通信 socket->connectToServer("system_daemon"); 服务器端示例(QLocalServer ) // 创建本地服务器 QLocalServer *server = new QLocalServer(this); // 监听连接 if (! my_local_service")) { qDebug() << "监听失败:" << server->errorString(); return; } // 处理新连接 connect(server, &QLocalServer :deleteLater); }); 注意事项 权限问题:在某些系统上,可能需要适当的权限才能创建或访问本地套接字 服务名称:服务名称应该是系统范围内唯一的 清理资源:服务器停止时应该删除套接字文件 QLocalServer
更详细的说明: https://doc.qt.io/qt-5/qtnetwork-index.html Local Socket Local Socket 用于在同一台计算机上运行的进程之间的通信,相关的类是 QLocalServer 示例 1. fortune server https://doc.qt.io/qt-5/qtcore-ipc-localfortuneserver-example.html 这个例子演示如何使用 QLocalServer create a local socket server Server::Server(QWidget *parent) : QDialog(parent) { server = new QLocalServer (this); server->listen("fortune") connect(server, &QLocalServer::newConnection, this, &Server
更详细的说明: https://doc.qt.io/qt-5/qtnetwork-index.html Local Socket Local Socket 用于在同一台计算机上运行的进程之间的通信,相关的类是 QLocalServer 示例 1. fortune server https://doc.qt.io/qt-5/qtcore-ipc-localfortuneserver-example.html 这个例子演示如何使用 QLocalServer create a local socket server Server::Server(QWidget *parent) : QDialog(parent) { server = new QLocalServer (this); server->listen("fortune") connect(server, &QLocalServer::newConnection, this, &Server
❞ 源码地址 https://github.com/qtproject/qt-solutions/tree/master/qtsingleapplication 基本原理 使用文件读写锁+QLocalServer