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

QT实现 端口扫描暂停和继续功能 3

上篇QT给端口扫描工程增加线程2-CSDN博客

为按钮pushButton_Stop添加clicked事件,功能为暂停扫描,并在暂停后显示继续按钮,点击继续按钮之后继续扫描

1.更新UI

添加继续按钮

点击转到槽则会自动声明

2. 更新 MainWindow.h

需要新增的部分

private slots:  void on_pushButton_Stop_clicked(); // 暂停按钮点击事件  void on_pushButton_Continue_clicked(); // 继续按钮点击事件  private:  bool isPaused; // 用于跟踪扫描是否暂停

3. 更新 MainWindow.cpp

在 MainWindow.cpp 中实现暂停和继续的功能。

3.1 初始化成员变量

在构造函数中初始化 isPaused 变量,并设置 pushButton_Continue 为隐藏状态:

MainWindow::MainWindow(QWidget *parent) :  QMainWindow(parent),  ui(new Ui::MainWindow),  isPaused(false) // 初始化为未暂停状态  
{  ui->setupUi(this);  ui->pushButton_Continue->setVisible(false); // 隐藏继续按钮  
}

3.2 实现暂停功能

在 on_pushButton_Stop_clicked() 槽函数中,设置 isPaused 为 true,并隐藏暂停按钮,显示继续按钮:

void MainWindow::on_pushButton_Stop_clicked() {  isPaused = true; // 设置为暂停状态  ui->pushButton_Stop->setEnabled(false); // 禁用暂停按钮  ui->pushButton_Continue->setVisible(true); // 显示继续按钮  
}

3.3 实现继续功能

在 on_pushButton_Continue_clicked() 槽函数中,设置 isPaused 为 false,并隐藏继续按钮,启用暂停按钮:

void MainWindow::on_pushButton_Continue_clicked() {  isPaused = false; // 设置为继续状态  ui->pushButton_Stop->setEnabled(true); // 启用暂停按钮  ui->pushButton_Continue->setVisible(false); // 隐藏继续按钮  // 继续扫描的逻辑  // 这里可以调用一个函数来继续扫描  continueScanning();  
}

4. 修改扫描逻辑

在 MyThread 类中,您需要修改扫描逻辑,以便在扫描过程中检查 isPaused 状态。如果扫描被暂停,则线程应等待,直到继续按钮被点击。

4.1更新 MyThread.h

4.2更新 MyThread.cpp

在 MyThread.cpp 中实现 setPaused 方法,并在 run() 方法中检查 isPaused 状态:  

void MyThread::setPaused(bool paused) {  isPaused = paused; // 更新暂停状态  
}  

while (isPaused) {  msleep(100); // 暂停扫描,避免 CPU 占用过高  }  
4.3在主窗口中管理暂停和继续

在点击暂停和继续按钮时调用 setPaused 方法。

5.连接信号和槽

因为先点击扫描才会有后面的暂停和继续,所以我选择把这个步骤放到扫描按钮点击事件处理函数
void MainWindow::on_pushButton_Scan_clicked()中

connect(ui->pushButton_Stop, &QPushButton::clicked, this, &MainWindow::on_pushButton_Stop_clicked);  
connect(ui->pushButton_Continue, &QPushButton::clicked, this, &MainWindow::on_pushButton_Continue_clicked);

相关文章:

QT实现 端口扫描暂停和继续功能 3

上篇QT给端口扫描工程增加线程2-CSDN博客 为按钮pushButton_Stop添加clicked事件,功能为暂停扫描,并在暂停后显示继续按钮,点击继续按钮之后继续扫描 1.更新UI 添加继续按钮 点击转到槽则会自动声明 2. 更新 MainWindow.h 需要新增的部分…...

SHViT模型详解

模型简介 SHViT是一种创新的 单头视觉Transformer ,旨在优化计算效率和内存使用。它的核心设计理念围绕着消除传统视觉Transformer架构中的冗余元素,特别关注宏观和微观设计层面的问题。 SHViT采用了 1616的大跨度patchify stem 和 3阶段结构 ,这种独特的设计不仅有效减少…...

QGIS Server安装部署教程

一、QGIS 安装部署 1、下载安装QGIS链接如下图,选择最新的安装包文件QGIS-OSGeo4W-3.34.14-1.msi,下载完成后运行安装。 2、安装时选择QGIS安装路径不要带空格,此处会影响QGIS Server安装运行。 3、安装过程省略,安装完成后打…...

基于 Apache Commons Pool 实现的 gRPC 连接池管理类 GrpcChannelPool 性能分析与优化

基于 Apache Commons Pool 实现的 gRPC 连接池管理类 GrpcChannelPool 性能分析与优化 1. 输出关键信息的代码示例 日志记录方法 使用以下代码记录连接池的关键信息,帮助分析连接池的状态和性能瓶颈: import org.apache.commons.pool2.impl.GenericO…...

【C语言】

目录 第一个C语言程序题目实际应用程序要求输入描述输出描述示例 程序实现三级目录 第一个C语言程序 打开VS创建项目&#xff08;视图-解决方案管理器&#xff09;创建源文件&#xff08;后缀.c&#xff09;.c会按照C的语言编译代码 c #include <stdio.h> //std-标准 //…...

标题:利用Spring Boot构建JWT刷新令牌应用

标题&#xff1a;利用Spring Boot构建JWT刷新令牌应用 去发现同类优质开源项目:https://gitcode.com/ 一、项目介绍 在Java开发中&#xff0c;Spring Boot以其简洁的配置和强大的功能深受开发者喜爱。Spring Boot Refresh Token with JWT 是一个开源示例项目&#xff0c;它展…...

性能测试工具的原理与架构解析

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 在软件开发与运维领域&#xff0c;性能测试是确保系统稳定、高效运行的关键环节。性能测试工具作为实现这一目标的重要工具&#xff0c;通过模拟真实用户行为和负载…...

基于STM32的自动水满报警系统设计

目录 引言系统设计 硬件设计软件设计系统功能模块 水位检测模块报警模块自动控制模块控制算法 水位检测逻辑报警触发逻辑代码实现 水位检测模块报警控制模块自动控制逻辑系统调试与优化结论与展望 1. 引言 水满报警系统在家庭、农业、工业等领域广泛应用&#xff0c;通过实时…...

C语言 数组编程练习

1.将数组A的内容和数组B中的内容进行交换。&#xff08;数组一样大&#xff09; 2.创建一个整形数组&#xff0c;完成对数组的操作 实现函数Init()初始化数组全为0 实现print()打印数组的每个元素 实现reverse()函数完成数组元素的逆置 //2.创建一个整形数组&#xff0c;完…...

Windows 远程桌面连接Ubuntu操作 可以自由相互复制文件 粘贴板等

1.windows不用动&#xff0c;用IP和用户密码直接连 Ubuntu设置 详细参考&#xff1a;https://blog.csdn.net/qq_22370409/article/details/88914093 新建的用户需要加入sudo 使有权限。 效果 可以自由相互复制文件 粘贴板等。...

链表OJ题(一)

(一&#xff09;轮转数组 . - 力扣&#xff08;LeetCode&#xff09; 题目描述&#xff1a;给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例一&#xff1a; 方法一&#xff1a;暴力求解 先用一个变量存储数组中的最后…...

C/C++中new/delete与malloc/free的区别及对象管理

C/C++中new/delete与malloc/free的区别及对象管理 在C/C++编程中,动态内存管理是一个核心且复杂的话题,其中new、delete、malloc和free是四个经常用于此目的的工具。尽管它们都涉及到内存的分配和释放,但它们在处理对象时的方式和效果却大相径庭。本文将通过示例来说明这些工…...

我的nvim的init.lua配置

nvim的配置文件路径在&#xff5e;/.config/nvim路径下&#xff1a; 一、目录如下&#xff1a; coc-settings.json文件是配置代码片段路径的文件init.lua配置文件的启动脚本lua/config.lua 全局配置文件lua/keymaps.lua 快捷键映射键文件lua/plugins.lua 插件的安装和配置文件…...

2025第1周 | JavaScript中的正则表达式

目录 1. 正则表达式是个什么东东&#xff1f;1.1 怎么定义正则1.2 对象字面量方式1.3 类创建方式 2. 怎么使用2.1 实例方法2.1.1 exec方法2.1.2 test方法 2.2 字符串中的方法2.2.1 match/matchAll2.2.2 replace/replaceAll2.2.3 split2.2.4 search 3. 规则3.1 修饰符3.2 字符类…...

基于 Python Django 的西西家居全屋定制系统(源码+部署+文档)

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…...

【Leetcode 热题 100】74. 搜索二维矩阵

问题背景 给你一个满足下述两条属性的 m n m \times n mn 整数矩阵&#xff1a; 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 t a r g e t target target&#xff0c;如果 t a r g e t target target 在矩阵中&…...

讯方技术入库深圳市第一批建设培育产教融合型企业

产教融合是指产业与教育的紧密结合&#xff0c;是现代职业教育体系的重要组成部分。通过企业与学校之间的合作&#xff0c;使学生在学校所学的知识和技能能够更好地满足企业和社会的实际需求&#xff0c;同时也为企业提供高素质的技术人才&#xff0c;促进产业升级和经济发展。…...

阿里云代理商热销产品推荐

在数字化浪潮的推动下&#xff0c;企业对于云计算的依赖日益加深。阿里云&#xff0c;作为中国领先的云计算服务提供商&#xff0c;为企业提供了丰富多样的云产品和服务。本文将聚焦于阿里云代理商热销产品推荐&#xff0c;探讨其如何帮助企业高效利用云资源&#xff0c;加速数…...

海外云服务器能用来做什么?

海外云服务器不仅服务种类繁多&#xff0c;而且能满足多行业的需求&#xff0c;方便了越来越多的企业与个人。本文将探讨海外云服务器的核心服务及其适用领域&#xff0c;帮助企业更好地了解这一技术资源。 云存储&#xff1a;安全高效的数据管理 海外云服务器为用户提供了稳定…...

LeetCode 704 如何正确书写一个二分查找

题目链接 中文版&#xff1a;https://leetcode.cn/problems/binary-search/description/ 题目描述 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums 中的 target&#xff0c;如果目标值存在返回下标…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

BLEU评分:机器翻译质量评估的黄金标准

BLEU评分&#xff1a;机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域&#xff0c;衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标&#xff0c;自2002年由IBM的Kishore Papineni等人提出以来&#xff0c;…...