linux系统 QT 处理键盘Ctrl+C信号

linux系统 QT 处理键盘Ctrl+C信号

1 设置Ctrl+C信号处理函数 Ctrl+C运行 ,serialPort不能用

.h

public:explicit axisControl(axisInfo *axisinf,QWidget *parent = nullptr);~axisControl();// 成员函数的Ctrl+C信号处理程序static  void handleCtrlC(int signal);// 静态的中间函数static void handleCtrlCWrapper(int signal);

.c

    // 设置Ctrl+C信号处理函数 Ctrl+C运行 ,serialPort不能用signal(SIGINT,handleCtrlC);
// 设置Ctrl+C信号处理函数 Ctrl+C运行 ,serialPort不能用,发不了
// 静态成员函数的实现
void  axisControl::handleCtrlC(int signal) {if (signal == SIGINT) {char data[2] ={1,4};long ret = serialPort->write(data,sizeof (data));std::cout << "Ctrl+C handleSignal received. Cleaning up..." << std::endl;// 在这里执行你的清理工作或其他任务// ...qDebug() << "handleCtrlC ...";// 在这里执行你的清理工作或其他任务// ...qDebug() << "Ctrl-C  handleCtrlC write ok 1 ... : %d  !"<<ret;//sleep(2);qDebug() << "Ctrl-C handleCtrlC  write ok 2... : %d  !"<<ret;// sleep(2);qDebug() << "Ctrl-C handleCtrlC delete ok 3... : %d  !"<<ret;if(ret == 2){// 最后退出应用程序QCoreApplication::quit();}}
}

2 Ctrl+C不运行 aboutToQuit

.h

private slots:void cleanupBeforeQuit();

.c

  // 连接 aboutToQuit 信号  Ctrl+C不运行connect(qApp, &QCoreApplication::aboutToQuit, this, &axisControl::cleanupBeforeQuit);
 在这个成员函数中执行清理工作  Ctrl+C不运行
void axisControl::cleanupBeforeQuit() {
//    qDebug() << "Ctrl-C  cleanupBeforeQuit Cleaning up before quitting...";//    // 在这里执行你的清理工作或其他任务
//    // ...
//    char data[2] ={1,4};
//    long ret = serialPort->write(data,sizeof (data));
//    qDebug() << "Ctrl-C cleanupBeforeQuit  write ok 1 ... : %d  !"<<ret;
//    sleep(2);
//    qDebug() << "Ctrl-C cleanupBeforeQuit write ok 2... : %d  !"<<ret;
//    sleep(1);
//     qDebug() << "Ctrl-C cleanupBeforeQuit delete ok 3... : %d  !"<<ret;//    // 最后退出应用程序
//    QCoreApplication::quit();
}

3 子界面关闭时执行清理工作 -ok closeEvent

.h


protected:void closeEvent(QCloseEvent *event) override;

.c

// 子界面关闭时执行清理工作
void axisControl::closeEvent(QCloseEvent *event)
{qDebug() << "Cleaning up before quitting...";// 在这里执行你的清理工作或其他任务// ...char data[2] ={1,4};long ret = serialPort->write(data,sizeof (data));qDebug() << " closeEvent write ok 1 ... : %d  !"<<ret;sleep(2);qDebug() << "  closeEvent  write ok 2... : %d  !"<<ret;sleep(2);qDebug() << "  closeEvent delete ok 3... : %d  !"<<ret;
//    serialPort->close();
//    delete  axisData;
//    delete serialPort;
//    delete actionControl;
//   delete ui;// 最后退出应用程序// QCoreApplication::quit();//  QMainWindow::closeEvent(event);
}

4 ctrl-C 不运行,关闭界面 运行,但serialPort发送不了数据。axisControl::~axisControl()

axisControl::~axisControl()
{char data[2] ={1,4};long ret = serialPort->write(data,sizeof (data));qDebug() << "Ctrl-C  axisControl write ok 1 ... : %d  !"<<ret;sleep(2);qDebug() << "Ctrl-C axisControl write ok 2... : %d  !"<<ret;sleep(2);qDebug() << "Ctrl-C axisControldelete ok 3... : %d  !"<<ret;
//    char data[2] ={1,4};
//    long ret = serialPort->write(data,sizeof (data));
//    sleep(1);
//    serialPort->close();
//    delete  axisData;
//    delete serialPort;
//    delete actionControl;//  delete ui;
}

5. QCoreApplication::aboutToQuit Ctrl+C不运行

    connect(qApp, &QCoreApplication::aboutToQuit, [this](){qDebug() << "About to quit. Cleaning up...";// 执行清理工作,例如关闭文件、释放资源等qDebug() << "Ctrl-C  aboutToQuit Cleaning up before quitting...";// 在这里执行你的清理工作或其他任务// ...char data[2] ={1,4};long ret = serialPort->write(data,sizeof (data));qDebug() << "Ctrl-C aboutToQuit  write ok 1 ... : %d  !"<<ret;sleep(2);qDebug() << "Ctrl-C aboutToQuit write ok 2... : %d  !"<<ret;sleep(2);qDebug() << "Ctrl-C aboutToQuit delete ok 3... : %d  !"<<ret;// 最后退出应用程序// QCoreApplication::quit();});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/735280.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【玩转Linux】有关Linux权限

目录 一.Linux权限的概念 1. 权限的本质 2.Linux中的用户 3.Linux中的权限管理 (1)文件访问者的分类 (2)文件类型和访问权限&#xff08;事物属性&#xff09; ①文件基本权限 ②文件权限值的表示方法 (3)文件访问权限的相关设置方法 ① 用 户 表 示 符 / - 权 …

EKF+PF的MATLAB例程

EKF+PF 扩展卡尔曼滤波与粒子滤波的MATLAB程序,有中文注释 程序源码 % EKF+PF效果对比 % author:Evand % 作者联系方式:evandjiang@qq.com(除前期达成一致外,咨询需付费) % date: 2024-1-10 % Ver2 clear;clc;close all; rng(0); %% 参数设置 N = 100; %粒子总数

c++之迭代器与反向迭代器

&#xff09; 正向迭代器迭代器的变量与typedef与模版operator()operator--()operator*()operator->() 反向迭代器模版与typedef与变量operator()operator--()operator*()operator->() 正向迭代器 以链表的迭代器为例 具体的代码以及可以看上一篇链表的文章:链表 迭代器的…

Vue3 快速上手从0到1,两小时学会【附源码】

小伙伴们好&#xff0c;欢迎关注&#xff0c;一起学习&#xff0c;无限进步 以下内容为vue3的学习笔记 项目需要使用到的依赖 npm install axios npm install nanoid vue-router npm install pinia npm install mitt 源码&#xff1a;Gitee 运行 npm install npm run dev需要运…

FastAPI静态文件映射到网页

安装了FastAPI 和 Uvicorn&#xff1a;pip install fastapi uvicorn 然后运行代码 from fastapi import FastAPI from fastapi.staticfiles import StaticFilesapp FastAPI()# 假设 dir_upload 为 "/Users/yourusername/yourprojectpath/files/" dir_upload &quo…

大唐杯学习笔记:Day10

1.1 5G网络基本架构-SA 基站 gNB可支持FDD模式,TDD模式或双模式操作&#xff1b; gNB可以通过Xn接口互联&#xff1b; gNB内部CU分为控制面和用户面分离架构&#xff1b; gNB可以由gNB-CU和一个或多个gNB-DU组成&#xff1b; gNB-CU和gNB-DU通过F1接口连接&#xff1b; …

每日OJ题_链表④_力扣23. 合并 K 个升序链表(小根堆_归并)

目录 力扣23. 合并 K 个升序链表 解析代码1&#xff08;小根堆优化&#xff09; 解析代码2&#xff08;递归_归并&#xff09; 力扣23. 合并 K 个升序链表 23. 合并 K 个升序链表 难度 困难 给你一个链表数组&#xff0c;每个链表都已经按升序排列。 请你将所有链表合并…

MacBook2024苹果免费mac电脑清理垃圾软件CleanMyMac X

CleanMyMac X是一款专业的Mac清理软件&#xff0c;具备多种强大功能。首先&#xff0c;它能够智能清理Mac磁盘上的垃圾文件和多余语言安装包&#xff0c;从而快速释放电脑内存。其次&#xff0c;CleanMyMac X可以轻松管理和升级Mac上的应用&#xff0c;同时强力卸载恶意软件并修…

windows使用pyenv

1、前言 虽然anaconda比pyenv相比有更好的python安装体验&#xff0c;但是有一个比较严重的问题的就是&#xff0c;他的python版本跨度不够大&#xff0c;一些老一些的项目的python版本找不到&#xff0c;比如py12306要求的python版本是3.6&#xff0c;在anaconda却找不到这个版…

Alibaba Cloud Linux 3.2104 LTS 64位 怎么安装python3.10.12和pip3.10

目录 Linux 安装python3.10.12 Linux 安装python3.10.12 报错解决 Linux 安装python3.10.12 问题描述&#xff1a;Alibaba Cloud Linux 3.2104 LTS 64位 安装python3.10.12和pip3.10&#xff0c;本人按照网上普通几种安装方式虽然能安装上了&#xff0c;但是它与pip版本不一…

查看pip当前关联python版本及位置

好久没用python了&#xff0c;把各种pip指向的环境忘光光啦&#xff0c;这里记录一下查看pip当前关联的python版本及位置的方法&#xff1a; pip -V结果&#xff1a; 我一般不用这个版本的python&#xff0c;去环境变量看了一下&#xff0c;原来是anaconda的Scripts自带pip&a…

gprof安装使用(CMake)说明

一、安装 1、gprof默认已安装&#xff0c;可安装相关图形处理 sudo apt-get install python graphviz sudo pip install gprof2dot 注意&#xff1a;在Debian中没有安装成功&#xff0c;报Python的版本不匹配 二、使用说明 1、使用CMake管理的工程&#xff1a; 重新配置CMa…

记录一次以WEB API方式为sonar扫描问题分配责任人的自杀式袭击

前提背景&#xff1a;获取android代码中我们修改的所有文件扫描&#xff0c;忽略基线原生未修改的文件也忽略了git&#xff0c;这导致扫描的问题没有办法分配责任人。 一开始想到了api分配的方式&#xff0c;于是动手操作了起来&#xff08;忽略了问题太多&#xff09;&#x…

Elastic Stack--05--聚合、映射mapping

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1.聚合(aggregations)基本概念桶&#xff08;bucket&#xff09;度量&#xff08;metrics&#xff09; 案例 11. 接下来按price字段进行分组&#xff1a;2. 若想对所…

LVS集群 ----------------(直接路由 )DR模式部署 (二)

一、LVS集群的三种工作模式 lvs-nat&#xff1a;修改请求报文的目标IP,多目标IP的DNAT lvs-dr&#xff1a;操纵封装新的MAC地址&#xff08;直接路由&#xff09; lvs-tun&#xff1a;隧道模式 lvs-dr 是 LVS集群的 默认工作模式 NAT通过网络地址转换实现的虚拟服务器&…

在Linux系统中安装Conda

在Linux系统中安装Conda&#xff08;通常指的是安装Miniconda或Anaconda&#xff09;可以通过以下步骤完成&#xff1a; 安装Miniconda&#xff1a; 下载Miniconda安装脚本&#xff1a; 打开终端&#xff0c;并使用wget或curl命令下载Miniconda的安装脚本。以下是使用wget的示…

(delphi11最新学习资料) Object Pascal 学习笔记---第6章第5节( 其他字符串类型 )

6.5 其他字符串类型 ​ 虽然字符串数据类型是迄今为止最常见、最常用的字符串表示类型&#xff0c;但 Object Pascal 桌面编译器过去和现在都有多种字符串类型。其中一些类型还可用于移动应用程序&#xff0c;在移动应用程序中&#xff0c;您也可以直接使用 TBytes 来操作单字…

2024年【电工(初级)】考试内容及电工(初级)考试报名

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 电工&#xff08;初级&#xff09;考试内容根据新电工&#xff08;初级&#xff09;考试大纲要求&#xff0c;安全生产模拟考试一点通将电工&#xff08;初级&#xff09;模拟考试试题进行汇编&#xff0c;组成一套电…

Gitlab修改仓库权限为public、Internal、Private

Public&#xff08;公开&#xff09;&#xff1a;所有人都可以访问该仓库&#xff1b; Internal&#xff08;内部&#xff09;&#xff1a;同一个GitLab群组或实例内的所有用户都可以访问该仓库&#xff1b; Private&#xff08;私人&#xff09;&#xff1a;仅包括指定成员的用…

2024 年广东省职业院校技能大赛(高职组) “云计算应用”赛项样题②

2024 年广东省职业院校技能大赛&#xff08;高职组&#xff09; “云计算应用”赛项样题② 模块一 私有云&#xff08;50 分&#xff09;任务 1 私有云服务搭建&#xff08;10 分&#xff09;任务 2 私有云服务运维&#xff08;25 分&#xff09;任务 3 私有云运维开发&#xf…