news 2026/8/6 0:21:11

QT/C++ 程序启动时检查程序是否已经启动

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
QT/C++ 程序启动时检查程序是否已经启动

关键词:QT程序重复启动检查

使用场景:不建议程序被多次启动的情况:例如程序启动后连接了某些设备,而操作用户没注意到程序已经启动了,又打开了一次程序,然后出现连接被占用等问题。

代码实现:

可以在QT项目的main.cpp中实现

#include <QApplication> #include <QSharedMemory> #include <QMessageBox> #include <QWidget> bool checkSingleInstance() { static QSharedMemory sharedMemory; // 设置唯一的key sharedMemory.setKey("MyAppSingleInstanceKey"); if (sharedMemory.attach()) { // 已经附加到现有内存,说明已有实例运行 return false; } // 创建共享内存段 if (!sharedMemory.create(1)) { QMessageBox::critical(nullptr, "错误", "无法创建共享内存段,可能是权限问题。"); return false; } // 确保程序退出时释放共享内存 QObject::connect(qApp, &QCoreApplication::aboutToQuit, []() { QSharedMemory().setKey("MyAppSingleInstanceKey"); }); return true; } int main(int argc, char *argv[]) { QApplication app(argc, argv); //插入检查函数 if (!checkSingleInstance()) { QMessageBox::warning(nullptr, "警告", "程序已经在运行中!"); return 0; } // 正常启动程序 QWidget window; window.show(); return app.exec(); }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/5 5:08:33

IP6808至为芯支持PD快充输入的15W无线充电方案SOC芯片

英集芯IP6808是一款用于无线充电底座、智能家居、车载无线充电的无线充电发射端控制SOC芯片、兼容WPC Qi v1.2.4最新标准&#xff0c;支持5W基础充电、苹果7.5W协议、三星10W快充以及EPP 15W增强功率模式。通过analog ping技术自动识别设备类型&#xff0c;实现“一板多用”。支…

作者头像 李华
网站建设 2026/8/4 23:46:52

大型地源热泵机组多高

大型地源热泵机组高度解析&#xff1a;从选型到安装的完整指南在规划地源热泵系统时&#xff0c;机组高度是工程设计中必须考虑的关键参数。作为地源热泵技术领先企业&#xff0c;瑞冬集团凭借在地源热泵领域的技术积淀&#xff0c;为您详细解析大型地源热泵机组的高度特性及其…

作者头像 李华
网站建设 2026/8/5 4:59:12

别墅供暖地源热泵

别墅供暖地源热泵&#xff1a;节能环保的理想选择随着人们对居住舒适度和节能环保要求的不断提高&#xff0c;别墅供暖系统的选择成为业主关注的重点。地源热泵作为一种高效、环保的供暖方式&#xff0c;正逐渐成为别墅供暖的首选方案。地源热泵系统的工作原理地源热泵系统通过…

作者头像 李华
网站建设 2026/8/5 5:29:23

Traefik:为云原生而生的自动化反向代理

Traefik 是什么&#xff1f; Traefik 是一个现代化的七层反向代理和负载均衡器&#xff0c;主打一个核心理念 —— 服务即配置&#xff08;Service Discovery First&#xff09;。 和传统反向代理&#xff08;如 Nginx&#xff09;最大的不同在于&#xff1a;你不需要手写大量…

作者头像 李华
网站建设 2026/8/5 5:04:02

P1043 [NOIP 2003 普及组] 数字游戏

#环形结构\#破环成链\#区间DP这道题是关于一个环上的区间DP问题&#xff0c;n个数字收尾相连成一个环&#xff0c;我们的任务是把n个数分成m个部分&#xff0c;各个部分内的数相加并对10取模再相乘&#xff0c;最后得到一个k值。要求求出k的最大值和最小值。前置知识区间DPDP问…

作者头像 李华