当前位置: 首页 > news >正文

网站制作代理设计公司企业网站详情

网站制作代理,设计公司企业网站详情,公司主页图片,做网站 异地域名QLocalSocket QLocalServer 逻辑:首先一个新的实例启动时,将尝试连接到同一个本地服务器,如果连接失败,则表示第一个实例进程,创建一个本地服务器;否则,拉起已打开的实例进程。 main.cpp #i…

QLocalSocket + QLocalServer

逻辑:首先一个新的实例启动时,将尝试连接到同一个本地服务器,如果连接失败,则表示第一个实例进程,创建一个本地服务器;否则,拉起已打开的实例进程。

main.cpp

#include <QApplication>
#include "main_windows.h"
#include "single_application.h"//QT启动屏蔽cmd
#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")int main(int argc, char* argv[])
{//QApplication a(argc, argv);SingleApplication singleApplication(argc, argv);if (!singleApplication.IsRunning()){MainWindow mainWindow;mainWindow.show();singleApplication.m_mainWindow = &mainWindow;return SingleApplication::exec();}return 0;
}

single_application.h

//
// Created by zhe.xiao on 2024/3/1.
//#pragma once#include <QApplication>
#include <QWidget>
#include <QLocalServer>
#include <QLocalSocket>class SingleApplication : public QApplication
{
Q_OBJECT
public:SingleApplication(int& argc, char* argv[]);//是否已有实例在运行bool IsRunning();private://初始化本地连接void InitLocalConnection();//创建服务端void CreateLocalServer();//激活窗口void ActivateWindow();public://MainWindow指针QWidget* m_mainWindow;private://运行状态bool m_isRunning;//是否已有实例在运行QLocalServer* m_localserver;//本地socket ServerQString m_applicationName;//连接超时时间int m_timeout = 1000;private slots://有新连接时触发void OnNewConnection();
};

single_application.cpp

//
// Created by zhe.xiao on 2024/3/1.
//#include <QFileInfo>
#include "single_application.h"
#include <QDebug>SingleApplication::SingleApplication(int& argc, char* argv[]) : QApplication(argc, argv)
{m_isRunning = false;m_mainWindow = nullptr;m_localserver = nullptr;m_applicationName = QFileInfo(QApplication::applicationFilePath()).fileName();qDebug() << "m_serverName:" << m_applicationName;InitLocalConnection();
}/*** 通过socket通讯实现程序单实例运行,* 初始化本地连接,如果连接不上server,则创建,否则退出*/
void SingleApplication::InitLocalConnection()
{m_isRunning = false;//尝试连接本地服务器,如果连上了就触发OnNewConnection,QLocalSocket socket;socket.connectToServer(m_applicationName);if (socket.waitForConnected(m_timeout)){m_isRunning = true;return;}//首次打开exe连接不上,则需要先创建一个本地服务器CreateLocalServer();
}void SingleApplication::CreateLocalServer()
{m_localserver = new QLocalServer(this);connect(m_localserver, &QLocalServer::newConnection, this, &SingleApplication::OnNewConnection);if (!m_localserver->listen(m_applicationName)){// 此时监听失败,可能是程序崩溃时,残留进程服务导致的,移除if (m_localserver->serverError() == QAbstractSocket::AddressInUseError){QLocalServer::removeServer(m_applicationName);m_localserver->listen(m_applicationName); //重新监听}}
}/*** 通过socket通讯实现程序单实例运行,监听到新的连接【即重新双击exe】时触发该函数.*/
void SingleApplication::OnNewConnection()
{QLocalSocket* localSocket = m_localserver->nextPendingConnection();if (localSocket){localSocket->waitForReadyRead(m_timeout * 2);delete localSocket;//激活窗口ActivateWindow();}
}void SingleApplication::ActivateWindow()
{if (m_mainWindow != nullptr){m_mainWindow->raise();m_mainWindow->showNormal();m_mainWindow->activateWindow();}
}bool SingleApplication::IsRunning()
{return m_isRunning;
}
http://www.yayakq.cn/news/666704/

相关文章:

  • 访问网站有音乐背景怎么做广州市住房和城乡建设局网站
  • 成都私人网站制作最新手机导航地图下载
  • 官方网站建设成果青岛个人网站制作
  • 多媒体资源库网站建设php双语网站
  • 网站建设多久能学会网站外链建设策略
  • 如何做php游戏介绍网站南京广告公司地址
  • 网站建设liluokj公众号的网站开发
  • 做外语网站的公司seo基础课程
  • 杭州的网站设计公司企业网站建设需要多少钱成都
  • 中国建设银行河北省门户网站表格制作手机软件
  • wordpress 页面转跳怀化网站优化
  • 唯品会网站开发网站脚本怎么做
  • 海外站推广洛阳400电话洛阳网站seo
  • 网站分销系统WordPress邮箱收集插件
  • 新乡网络网站建设word如何做网站
  • 营销型网站解决方案网站开发团队奖惩
  • 网站开发课程软件南昌企业建站模板
  • 企业网站做推广网址导航名词解释
  • 做爰视频在线观看免费网站数据分析平台
  • 深喉咙企业网站模板关于网站的ppt怎么做
  • 一开始用php做网站安溪人做的网站
  • 滨州论坛网站建设企业主体负责人和网站负责人
  • 用动物做logo的旅游网站营业执照注册
  • 手机网站源程序南宁建站平台
  • 网站开发的地图接口用c 做网站在Linux上
  • 合肥网站定制公司怎样如何做网站赚钱
  • 网站租房做公寓精品课程网站建设论文
  • 如何建设自己的网站 知乎公司内部网站建设管理办法
  • 网站开发过程阶段网络信息
  • 无法更新网站主页 dedecmswordpress 连接后台