0210作业

ops/2025/2/11 12:06:14/

思维导图

作业

练习

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);this->setMouseTracking(true);
}Widget::~Widget()
{delete ui;
}void Widget::mousePressEvent(QMouseEvent *event)
{//qDebug() << "有鼠标被按下";if(event->button()==Qt::LeftButton){qDebug() << "鼠标左键被按下";}else if(event->button()==Qt::RightButton){qDebug() << "鼠标右键被按下";}else if(event->button()==Qt::MidButton){qDebug() << "鼠标中键被按下";}
}
void Widget::mouseReleaseEvent(QMouseEvent *event)
{if(event->button()==Qt::LeftButton){qDebug() << "鼠标左键被抬起";}else if(event->button()==Qt::RightButton){qDebug() << "鼠标右键被抬起";}else if(event->button()==Qt::MidButton){qDebug() << "鼠标中键被抬起";}
}
void Widget::mouseDoubleClickEvent(QMouseEvent *event)
{if(event->button()==Qt::LeftButton){qDebug() << "鼠标左键被双击";}else if(event->button()==Qt::RightButton){qDebug() << "鼠标右键被双击";}else if(event->button()==Qt::MidButton){qDebug() << "鼠标中键被双击";}
}
void Widget::mouseMoveEvent(QMouseEvent *event)
{if(event->buttons()==Qt::LeftButton){qDebug() << "鼠标左键被移动" <<event->pos() <<event->globalPos();}else if(event->buttons()==Qt::RightButton){qDebug() << "鼠标右键被移动"<<event->pos() <<event->globalPos();}else if(event->buttons()==Qt::MidButton){qDebug() << "鼠标中键被移动"<<event->pos() <<event->globalPos();}
}void Widget::keyPressEvent(QKeyEvent *event)
{qDebug() <<event->text()<<"被按下,对应的值为:"<<event->key();
}void Widget::keyReleaseEvent(QKeyEvent *event)
{qDebug() <<event->text()<<"被按下,对应的值为:"<<event->key();
}

补充

void Widget::on_saveBtn_clicked()
{//调用静态成员函数QString fname = QFileDialog::getSaveFileName(this,"选择文件","./","all(*.*);;text(*.txt);;Image(*,png *.jpg *.xpm);;soures(*.cpp)");QFile f;f.setFileName(fname);if(!f.exists()){QMessageBox::information(this,"提示","文件不存在");return;}if(!f.open(QFile::WriteOnly)){QMessageBox::information(this,"提示","文件打开失败");}//从QTextEdit读取文件QString q = ui->textEdit->toPlainText();//将内容写入文件QByteArray msg = q.toUtf8();f.write(msg);//关闭文件f.close();}

题目


http://www.ppmy.cn/ops/157517.html

相关文章

Java设计模式——责任链模式与策略模式

责任链模式与策略模式的区别 文章目录 责任链模式与策略模式的区别定义与概念结构与实现应用场景总结 在软件开发中&#xff0c;设计模式是解决各种问题的有力工具。责任链模式和策略模式作为两种常见的设计模式&#xff0c;虽然都能在一定程度上提高代码的可维护性和可扩展性&…

【算法篇】贪心算法

目录 贪心算法 贪心算法实际应用 一&#xff0c;零钱找回问题 二&#xff0c;活动选择问题 三&#xff0c;分数背包问题 将数组和减半的最小操作次数 最大数 贪心算法 贪心算法&#xff0c;是一种在每一步选择中都采取当前状态下的最优策略&#xff0c;期望得到全局最优…

OpenAI Deep Research被huggingface 24小时复现开源了

自OpenAI发布Deep Research&#xff08;一种使用推理来综合大量在线信息并完成多步骤研究任务的AI Agent&#xff09;之后开源社区已经迎来一大波复现了&#xff0c;PaperAgent进行了梳理&#xff1a; 1.2k星 https://github.com/jina-ai/node-DeepResearch 825 https://gith…

MIT6.824 Lecture 2-RPC and Threads Lecture 3-GFS

Lecture 2-RPC and Threads Go语言在多线程、同步&#xff0c;还有很好用的RPC包 《Effective Go》 线程是实现并发的重要工具 在分布式系统里关注多线程的原因&#xff1a; I/O concurrencyParallelismConvenience Thread challenges 用锁解决race问题 Coordination channel…

记录 | WPF基础学习自定义按钮

目录 前言一、解析Button.TemplateBorder和TemplateBinding 二、代码提供更新时间 前言 参考文章&#xff1a; 参考视频&#xff1a;【WPF入门教程 Visual Studio 2022】WPF界面开发入门 自己的感想 这里涉及到Template模板和事件。主要干两件事&#xff1a;1、template中的重写…

vue中computed和watch的区别,以及适用场景

一、computed&#xff1a;通过属性计算而得来的属性 computed内部的函数在调用时不加()。computed是依赖vm中data的属性变化而变化的&#xff0c;也就是说&#xff0c;当data中的属性发生改变的时候&#xff0c;当前函数才会执行&#xff0c;data中的属性没有改变的时候&#…

防御综合实验

1、实验拓扑图 2、实验步骤 需求一&#xff1a;完成IP配置 FW OA Web DNS PC1 Client2 需求二&#xff1a;DHCP分配IP 需求三&#xff1a;配置安全区域 需求四&#xff1a;防火墙地址组信息 DMZ区域 TrustA TrustB 需求五&#xff1a;管理员 配…

【大模型】Ubuntu下安装ollama,DeepSseek-R1:32b的本地部署和运行

1 ollama 的安装与设置 ollama官网链接&#xff1a;https://ollama.com/ 在左上角的【Models】中展示了ollama支持的模型在正中间的【Download】中课可以下载支持平台中的安装包。   其安装和模型路径配置操作流程如下&#xff1a; ollama的安装 这里选择命令安装curl -fsSL …