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

QT无弹窗运行和只允许运行一个exe

        最近做一个小功能,需要后台运行QT程序,无弹窗,并且只允许一个exe运行,不关闭程序,无法2次启动。

main.cpp

#include "deleteshotcurveflie.h"
#include <QApplication>
#include <QSharedMemory>
#include <QMessageBox>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    DeleteShotCurveFlie w;
    // 创建一个QSharedMemory对象来检查是否已经存在实例
    QSharedMemory sharedMemory("UniqueApplicationName");
    // 尝试附加到共享内存段
    if (!sharedMemory.attach())
    {
        // 如果无法附加,说明这是第一个实例
        sharedMemory.create(1); // 创建一个1字节的共享内存段

        // 创建并显示主窗口

        w.show();
        w.hide();
        // 开始事件循环
        int ret = a.exec();

        // 程序退出时释放共享内存
        sharedMemory.detach();

        return ret;
    }
    else
    {
        // 如果已经附加到共享内存,说明已经有实例在运行
        QMessageBox::information(nullptr, "程序运行中", "该程序已经在运行中,不能打开第二个窗口。");
        w.raise();
        return 0;
    }

}

deleteshotcurveflie.cpp

#include "deleteshotcurveflie.h"
#include <QFileSystemWatcher>
#include <QDir>
#include <QDebug>

DeleteShotCurveFlie::DeleteShotCurveFlie(QWidget *parent)
    : QWidget(parent)
{
    this->setMaximumSize(1,1);//设置为最小
    this->setWindowFlags(Qt::FramelessWindowHint);//窗口无边框化
}


http://www.kler.cn/a/545395.html

相关文章:

  • springboot020基于Java的免税商品优选购物商城
  • 零基础开发自己的微信小程序(工具箱之父)(二)
  • WPS或word接入智能AI
  • 机器翻译技术的演进与未来趋势:从规则到神经网络的革新
  • InfluxDB数据库跨服务器迁移指南
  • 第12周:LSTM(火灾温度)
  • 在 PyCharm 中接入deepseek的API的各种方法
  • Node.js 连接 MongoDB
  • 【php】php json_encode($arr) 和 json_encode($arr, 320) 有什么区别?
  • Redis07 - Redis底层数据结构
  • 3.3.3 VO-O语法- 语法算子(二)
  • 【深度学习】多目标融合算法(四):多门混合专家网络MMOE(Multi-gate Mixture-of-Experts)
  • three.js 通用 shaderToy着色器使用,切换
  • 2.7 静态方法/构造函数Mock
  • Java面向对象二:三大特性
  • python后端调用Deep Seek API
  • Pyqt6 中 QMediaPlayer 音视频播放
  • vs发布后再linux打包linux版本的安装包
  • BIO、NIO 和 AIO 这三者的区别?
  • 磁盘与mysql的故事