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

QT 作业 C++ day5

作业

代码

MyQThread.h

class MyThread : public QThread
{Q_OBJECT
public:MyThread(QObject *parent = nullptr);
protected:void run() override;
signals://向ui界面发送的 "复制进度" 的信号void copy_process_signal(int index);    
public slots:// "复制"信号的槽void do_copyfile_slots(QString oldfilename,QString newfilename);
private:QString oldfilename;QString newfilename;bool start_copy_flag=0;
};#endif // MYTHREAD_H

MyQThread.cpp

MyThread::MyThread(QObject *parent):QThread(parent)
{}// "槽"
void MyThread::do_copyfile_slots(QString oldfilename,QString newfilename)
{//进入此函数,说明ui界面拖入了文件,需要进行文件复制this->oldfilename=oldfilename;  //源文件路径this->newfilename=newfilename;  //目标文件路径start_copy_flag=1;  //打开标志位
}void MyThread::run()
{qDebug() << "子进程进入run函数";while(1){if(start_copy_flag){;//文件复制(准备阶段)QFile old_file(oldfilename);      //拆功能键QFile对象QFile new_file(newfilename);old_file.open(QIODevice::ReadOnly);    //打开文件new_file.open(QIODevice::WriteOnly);char data[4096];qint64 filesize = old_file.size();     //文件总大小qint64 readsize=0;                     //已读大小int index_backup=0;                    //任务进度//文件复制(执行阶段)while(1){//读取数据qint64 real_read__size = old_file.read(data,4096);//判断是否读完if(real_read__size == 0){break;}        //读取到的字节数为0 说明读取完毕,退出//计算"处理进度"readsize+=real_read__size;              //已经读取的字节总数int index =readsize * 100 / filesize;   //"处理进度"//告知ui界面 当前“处理进度”if(index - index_backup > 1)    //仅当"处理进度"发生变化x时{copy_process_signal(index); //才发出信号,让ui重新回执进度qDebug() << "复制进度" << index << " 读取总字节" << readsize << " 文件总大小" << filesize;}//写入数据new_file.write(data,real_read__size);}copy_process_signal(100);         //运行到此说明复制完毕,手动将进度设置为100old_file.close();new_file.close();qDebug() << "复制完毕";start_copy_flag = 0;    //关闭标志位}}exec(); // 启动事件循环
}

Widget.h

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECT
public:Widget(QWidget *parent = nullptr);~Widget();void dropEvent(QDropEvent *event) override;             //释放void dragEnterEvent(QDragEnterEvent *event) override;   //进入
private slots:void update_copy_process(int index);
signals:void copyfile_signal(QString oldfilename,QString newfilename);
private:Ui::Widget *ui;
};
#endif // WIDGET_H

Widget.cpp

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);this->setAcceptDrops(1);    //设置允许拖拽MyThread* thread = new MyThread(this);// "复制文件"QObject::connect(this,&Widget::copyfile_signal,thread,&MyThread::do_copyfile_slots);// "任务进度"QObject::connect(thread,&MyThread::copy_process_signal,this,&Widget::update_copy_process);//滑块相关设置QString qss = "QSlider::sub-page{background-color:blue} QSlider::groove:horizontal{background-color:white}";ui->slider->setStyleSheet(qss);thread->start();
}Widget::~Widget()
{delete ui;
}//拖入
void Widget::dragEnterEvent(QDragEnterEvent *event)
{event->acceptProposedAction();  //接收拖入
}//释放
void Widget::dropEvent(QDropEvent *event)
{//从事件中解析文件名const QMimeData* mData = event->mimeData();      //获取其中mimeDataQList<QUrl> urls_list = mData->urls();           //转为urls_list 文件信息村饭到这个容器中QUrl url = urls_list[0];                         //读取容器中第一条数据QString oldfilename = url.toLocalFile();         //url 转 "文件名"//从对话框中获取文件名QString newfilename = QFileDialog::getSaveFileName(this,"保存文件","E:\\DAY5","AllFiles (*);;Images (*.png *.xpm *.jpg)");//数据部分,交由进程处理copyfile_signal(oldfilename,newfilename);
}//槽函数(子进程任务进度 信号)
void Widget::update_copy_process(int index)
{//设置进度条ui->slider->setValue(index);
}

效果

相关文章:

QT 作业 C++ day5

作业 代码 MyQThread.h class MyThread : public QThread {Q_OBJECT public:MyThread(QObject *parent nullptr); protected:void run() override; signals://向ui界面发送的 "复制进度" 的信号void copy_process_signal(int index); public slots:// "复…...

洛谷 P2234:[HNOI2002] 营业额统计 ← STL set

【题目来源】 https://www.luogu.com.cn/problem/P2234 【题目描述】 Tiger 最近被公司升任为营业部经理&#xff0c;他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。 Tiger 拿出了公司的账本&#xff0c;账本上记录了公司成立以来每天的营业额。分析…...

植物神经功能紊乱检查不出来,浑身难受?

植物神经功能紊乱&#xff0c;又称为自主神经功能失调&#xff0c;是一种功能性神经症&#xff0c;它涉及身体多个系统的不规则反应&#xff0c;通常没有器质性病变作为基础。这意味着&#xff0c;尽管患者可能会体验到多种症状&#xff0c;如焦虑、紧张、心悸、疲劳、失眠等&a…...

vue3 遇到babel问题(exports is not defined) 解决方案

由于我在引用ant-design-vue插件&#xff0c;于是产生了下图的问题。 1.问题分析 Babel 是一个 JavaScript 编译器&#xff0c;主要用于&#xff1a;将 ES6 代码转译为 ES5 代码&#xff0c;以兼容旧版浏览器。处理模块化语法&#xff08;如 import/export&#xff09;。 2.解…...

基于SpringBoot+Vue的工商局商家管理系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…...

ESP8266 入门(第 2 部分):使用 AT 命令

使用 AT 命令对 WiFi 收发器ESP8266编程 本教程是上一个教程 ESP8266 入门(第 1 部分)的延续。因此,简单回顾一下,在之前的教程中,我们介绍了 ESP 模块,并学习了一些基础知识。我们还使用 FTDI 串行适配器模块制作了一个开发板,该模块可以很容易地用于使用 AT 命令和 A…...

【CSS3】筑基篇

目录 复合选择器后代选择器子选择器并集选择器交集选择器伪类选择器 CSS 三大特性继承性层叠性优先级 背景属性背景色背景图背景图平铺方式背景图位置背景图缩放背景图固定背景复合属性 显示模式显示模式块级元素行内元素行内块元素 转换显示模式 结构伪类选择器结构伪类选择器…...

11-Agent中配置自己的插件

目录 关键词 摘要 速览 配置和集成自定义插件 使用AI插件在直播间绘制图像 API接口调用及配置说明 创建和配置API工具以生成图像 编写和配置参数及API调用说明 如何配置和使用API进行HTTP请求 配置和测试API插件的步骤 思维导图 发言总结 要点回顾 如何配置一个专…...

2025-03-08 学习记录--C/C++-PTA 习题10-1 判断满足条件的三位数

合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、题目描述 ⭐️ 裁判测试程序样例&#xff1a; #include <stdio.h> #include <math.h>int search( int n );int…...

INFINI Labs 产品更新 | Easysearch 增加异步搜索等新特性

INFINI Labs 产品更新发布&#xff01;此次更新&#xff0c;Easysearch 增加了新的功能和数据类型&#xff0c;包括 wildcard 数据类型、Point in time 搜索 API、异步搜索 API、数值和日期字段的 doc-values 搜索支持&#xff0c;Console 新增了日志查询功能。 INFINI Easyse…...

关于网络数通工程师 OSPF 协议的常见面试问题

基础理论部分‌ ‌OSPF是什么&#xff1f;其核心设计目标及主要特性有哪些&#xff1f;‌ OSPF&#xff08;开放式最短路径优先&#xff09;是基于链路状态的内部网关协议&#xff08;IGP&#xff09;&#xff0c;使用Dijkstra的SPF算法计算最短路径树&#xff0c;核心目标包括…...

Go 语言 + libbpfgo 实战 eBPF 开发

Go 语言 libbpfgo 实战 eBPF 开发 1. 引言 这是专栏的第一篇文章&#xff0c;我们将从环境准备、示例代码运行和详解三个方面&#xff0c;带你快速入门 eBPF 开发。 &#x1f4cc; 读完这篇文章&#xff0c;你将学会&#xff1a; ✔️ 如何用 Go libbpfgo 开发 eBPF 程序。…...

练习题:74

目录 Python题目 题目 题目分析 需求理解 关键知识点 实现思路分析 复杂度分析 可能遇到的问题及注意事项 代码实现 代码解释 运行思路 1. 列表定义阶段 2. for 循环启动阶段 3. 偶数判断与 continue 语句执行阶段 4. 奇数元素输出阶段 5. 循环结束阶段 结束语…...

Python 性能优化:从入门到精通的实用指南

Langchain系列文章目录 01-玩转LangChain&#xff1a;从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块&#xff1a;四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain&#xff1a;从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...

C# OPC DA获取DCS数据(提前配置DCOM)

OPC DA配置操作手册 配置完成后&#xff0c;访问远程ip&#xff0c;就能获取到服务 C#使用Interop.OPCAutomation采集OPC DA数据&#xff0c;支持订阅&#xff08;数据变化&#xff09;、单个读取、单个写入、断线重连...

xinference docker 部署方式

文章目录 简绍docker 安装方式访问地址对应官网在 dify 中 添加 xinference 容器内置大语言模型嵌入模型图像模型音频模型重排序模型视频模型 简绍 Xorbits Inference (Xinference) 是一个开源平台&#xff0c;用于简化各种 AI 模型的运行和集成。借助 Xinference&#xff0c;…...

基于Kubernetes部署MySQL主从集群

以下是一个基于Kubernetes部署MySQL主从集群的详细YAML示例&#xff0c;包含StatefulSet、Service、ConfigMap和Secret等关键配置。MySQL主从集群需要至少1个主节点和多个从节点&#xff0c;这里使用 StatefulSet 初始化脚本 实现主从自动配置。 1. 创建 Namespace (可选) ap…...

【Azure 架构师学习笔记】- Azure Databricks (17) --Delta Live Table和Delta Table

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (16) – Delta Lake 和 ADLS整合 前言 前面介绍了Delta Table&#xff0c;但是Databricks又推出了“Delta Live Tables&#xff08;DLTs&…...

Mybatis Generator 使用手册

第一章 什么是Mybatis Generator&#xff1f; MyBatis Generator Core – Introduction to MyBatis Generator MyBatis生成器&#xff08;MBG&#xff09;是MyBatis框架的代码生成工具。它支持为所有版本的MyBatis生成代码&#xff0c;通过解析数据库表&#xff08;或多个表&…...

快乐数 力扣202

一、题目 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1&#xff0c;也可能是 无限循环 但始终变不到 1。如果这个过程 结果为 1&…...

软阴影:那个让虚拟世界“温柔起来“的光影小秘密

一、从一只小猫的影子说起 前几天我在朋友家做客&#xff0c;他家养了一只胖乎乎的橘猫&#xff0c;正趴在阳台的窗边晒太阳。我无意间瞥了一眼那只猫脚边的影子&#xff0c;突然被一个细节震撼了—— 那只猫的影子——并不是一片均匀的黑。 仔细看——猫肚子紧贴地板的地方——…...

GEO生成引擎优化:当AI成为信息分发的主角,品牌如何抢占对话窗口?

当用户不再"搜索-浏览"&#xff0c;而是直接"AI提问-获取答案"&#xff0c;传统SEO的逻辑正在被彻底改写。2026年&#xff0c;GEO&#xff08;Generative Engine Optimization&#xff0c;生成式引擎优化&#xff09;已经从概念走向规模化落地。本文从技术…...

HoRain云--CLAUDE.md 使用指南

&#x1f3ac; HoRain云小助手&#xff1a;个人主页 &#x1f525; 个人专栏: 《Linux 系列教程》《c语言教程》 ⛺️生活的理想&#xff0c;就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站&#xff0c;性价比超高&#xff0c;大内存超划算&#xff01;…...

通过Taotoken标准OpenAI协议实现分钟级集成现有代码

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 通过Taotoken标准OpenAI协议实现分钟级集成现有代码 1. 迁移背景与核心思路 许多开发团队在构建AI应用时&#xff0c;会直接使用O…...

Unity塔防底层架构:ScriptableObject驱动的数据契约设计

1. 这不是“又一个塔防模板”&#xff0c;而是塔防开发的底层操作系统我第一次在Asset Store点开Tower Defense Toolkit 4&#xff08;TDTK-4&#xff09;的预览图时&#xff0c;下意识划走了——界面太“干净”了&#xff0c;没有炫酷的粒子特效演示&#xff0c;没有满屏飞舞的…...

NHSE终极教程:5分钟掌握动物森友会存档编辑技巧

NHSE终极教程&#xff1a;5分钟掌握动物森友会存档编辑技巧 【免费下载链接】NHSE Animal Crossing: New Horizons save editor 项目地址: https://gitcode.com/gh_mirrors/nh/NHSE 还在为《集合啦&#xff01;动物森友会》的收集烦恼吗&#xff1f;想快速打造梦想岛屿却…...

观察Taotoken在多模型聚合调用下的路由与失败重试效果

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 观察Taotoken在多模型聚合调用下的路由与失败重试效果 在构建依赖大模型能力的应用时&#xff0c;服务的稳定性是开发者关注的核心…...

Visual C++运行库一键安装指南:彻底解决Windows应用依赖问题

Visual C运行库一键安装指南&#xff1a;彻底解决Windows应用依赖问题 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过打开软件时弹出"缺少…...

PagerLayoutManager:让Android网格分页布局实现变得简单高效的终极方案

PagerLayoutManager&#xff1a;让Android网格分页布局实现变得简单高效的终极方案 【免费下载链接】pager-layoutmanager [暂停维护]Android 网格分页布局。 项目地址: https://gitcode.com/gh_mirrors/pa/pager-layoutmanager PagerLayoutManager是一款专为Android开发…...

PyAutoGUI图像识别踩坑实录:如何让游戏自动化脚本更稳定?(附避坑指南)

PyAutoGUI图像识别稳定性优化实战&#xff1a;从原理到避坑指南游戏自动化脚本开发中&#xff0c;图像识别是最容易翻车的环节。上周我的《原神》自动采集脚本在好友电脑上运行时&#xff0c;连续三次误点了传送锚点而非目标采集物——这让我意识到不同设备环境对locateOnScree…...