Qt的事件

一、鼠标按下事件

//鼠标按下事件,获取屏幕位置,并显示,移动显示框
void Widget::mousePressEvent(QMouseEvent *event)
{if(event->button() != Qt::LeftButton){return ;}QPoint point    = event->pos();QPointF winPt   = event->screenPos();QPointF gloalPt = event->globalPos();//相对屏幕的绝对位置QString str = QString::asprintf("point = (%d,%d)",point.x(),point.y());str        += QString::asprintf("\nwinPt = (%.0f,%.0f)",winPt.x(),winPt.y());str        += QString::asprintf("\ngloalPt = (%.0f,%.0f)",gloalPt.x(),gloalPt.y());ui->label->move(event->pos());ui->label->setText(str);QWidget::mousePressEvent(event);
}

二、鼠标移动事件

//鼠标移动实时获取鼠标位置,并显示
void Widget::mouseMoveEvent(QMouseEvent *event)
{QString str;QPoint point    = event->pos();//str = QString("%1 , %2").arg(QCursor().pos().x()).arg(QCursor().pos().y());//获取鼠标相对整个屏幕的位置str = QString::asprintf("(%d,%d)",point.x(),point.y());//获取相对屏幕的位置
//   ui->label->move(event->pos());ui->label_2->setText(str);//实时显示在框内QWidget::mouseMoveEvent(event);
}

三、键盘按下事件

//点击键盘按钮A或者左键,左移;点击按钮右键或者D键,右移;以此类推
void Widget::keyPressEvent(QKeyEvent *event)
{QPoint poit = ui->pushButton->pos();//获取按钮坐标位置if((event->key() == Qt:: Key_A) || (event->key() == Qt::Key_Left)){ui->pushButton->move(poit.x() -30, poit.y());}else if((event->key() == Qt::Key_W) || (event->key() == Qt::Key_Up)){ui->pushButton->move(poit.x(), poit.y() -30);}else if((event->key() == Qt::Key_S) || event->key() == Qt::Key_Down){ui->pushButton->move(poit.x(), poit.y() + 30);}else if((event->key() == Qt::Key_D) || event->key() == Qt::Key_Right){ui->pushButton->move(poit.x() + 30,poit.y());}
}

四、绘制背景图片

//绘制一张背景图片
void Widget::paintEvent (QPaintEvent *event){Q_UNUSED(event);QPainter pait(this);pait.drawPixmap(0,0,this->width(),this->height(),QPixmap(":/image/bj.png"));
}

五、注意

在构造函数中加入以下代码,才可以实现相应事件。

this->setMouseTracking(true);//开启鼠标跟踪

grabKeyboard();//获取所有按键

通过以下操作,可以查看Widget类中的虚函数事件。
第一步右键点击类,第二步点击Refactor,第三步点击Insert Virty=ual Function of Base Classes,就可以弹出虚函数事件。
在这里插入图片描述
选中相关需要的虚函数事件,将2个Add相关的复选框选中,点击ok即可添加。
在这里插入图片描述

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

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

相关文章

Python学习-shutil模块和OS模块学习

shutil模块 针对文件的拷贝,删除,移动,压缩和解压操作 # 1.copyfileobj只能复制文件内容,无法复制权限#复制文件时,要选择自己有权限的目录执行操作,创建的文件会根据系统umask设定的参数来指定用户权限 s…

首发scitb包,一个为制作统计表格而生的R包

目前,本人写的第3个R包scitb包已经正式在R语言官方CRAN上线,scitb包是一个为生成专业化统计表格而生的R包。 可以使用以下代码安装 install.packages("scitb")scitb包对我而言是个很重要的R包,我的很多想法需要靠它做平台来实现&a…

项目实战:优化Servlet,把所有围绕Fruit操作的Servlet封装成一个Servlet

1、FruitServlet 这些Servlet都是围绕着Fruit进行的把所有对水果增删改查的Servlet放到一个Servlet里面,让tomcat实例化一个Servlet对象 package com.csdn.fruit.servlet; import com.csdn.fruit.dto.PageInfo; import com.csdn.fruit.dto.PageQueryParam; import c…

多级缓存之JVM进程缓存

1.什么是多级缓存 传统的缓存策略一般是请求到达Tomcat后,先查询Redis,如果未命中则查询数据库,如图: 存在下面的问题: 请求要经过Tomcat处理,Tomcat的性能成为整个系统的瓶颈 Redis缓存失效时&#xff0…

STM32笔记—DMA

目录 一、DMA简介 二、DMA主要特性 三、DMA框图 3.1 DMA处理 3.2 仲裁器 3.3 DMA通道 扩展: 断言: 枚举: 3.4 可编程的数据传输宽度、对齐方式和数据大小端 3.5 DMA请求映像 四、DMA基本结构 4.1 DMA_Init配置 4.2 实现DMAADC扫描模式 实现要求…

PMP考试都是什么题?

PMP考试都是选择题,180道选择题,单选170道,多选10道,告知答案选项数量。 这里分享一下PMP考试中的常见翻译问题,pmp干货可在文末获取。 1、题目中出现的“启动会议”或“启动大会”开工会议(kick-off mee…

康耐视深度学习ViDi-ViDi四大工具介绍与主要用途

Cognex ViDi 工具是一系列机器视觉工具,通过深度学习解决各种难以解决的挑战。虽然这些工具共享一个引擎,但它们在图像中寻找的内容不同。更具体地说,在分析单个点、单个区域或完整图像时,每个工具都有不同的侧重点。 Locate&…

极致性能优化:前端SSR渲染利器Qwik.js | 京东云技术团队

引言 前端性能已成为网站和应用成功的关键要素之一。用户期望快速加载的页面和流畅的交互,而前端框架的选择对于实现这些目标至关重要。然而,传统的前端框架在某些情况下可能面临性能挑战且存在技术壁垒。 在这个充满挑战的背景下,我们引入…

基础课18——智能客服系统架构

1.基础设施层 基础设施主要包括以下几点: 1. 硬件设施:包括服务器、存储设备、网络设备等,这是整个系统运行的物理基础。 2. 软件设施:包括操作系统、数据库管理系统、自然语言处理(NLP)工具和机器学习算法等,这些是…

Jmeter分布式压测 —— 易踩坑点

1、压测机 无论是从成本角度还是维护的难易方面,压测机的数量,适量就好。举个例子,8C16G的一台服务器,部署Jmeter后,根据我个人的测试比对数据,配置≤1500个线程数,最好。太多了性能损耗较大&a…

Cannot run program “D:\c\IntelliJ IDEA 2021.1.3\jbr\bin\java.exe“

如果你的idea在打开后出现了这个故障 Cannot run program "D:\c\IntelliJ IDEA 2021.1.3\jbr\bin\java.exe" (in directory "D:\c\IntelliJ IDEA 2021.1.3\bin"): CreateProcess error2, 系统找不到指定的文件。 打开IDEA的设置 file --> settings --&…

机器人制作开源方案 | 管内检测维护机器人

一、作品简介 作者:李泽彬,李晋晟,杜张坤,禹馨雅 单位:运城学院 指导老师:薛晓峰 随着我国的社会主义市场经济的飞速发展和科学技术的革新,各行各业的发展越来越离不开信息化和网络化的…

【扩散模型】5、Diffusion models beat GAN | 使用类别引导图像生成

论文:Diffusion models beat GAN on image Synthesis 代码:https://github.com/openai/guided-diffusion 出处:OPENAI | NIPS2021 时间:2021 贡献: 在本文章之前,扩散模型生成的图片已经非常逼真了&am…

ubuntu20.04配置解压版mysql5.7

目录 1.创建mysql 用户组和用户2.下载 MySQL 5.7 解压版3.解压 MySQL 文件4.将 MySQL 移动到适当的目录5.更改mysql目录所属的用户组和用户,以及权限6.进入mysql/bin/目录,安装初始化7.编辑/etc/mysql/my.cnf配置文件8.启动 MySQL 服务:9.建立…

linux之信号

Linux之信号 什么是信号信号的产生方式signalsignactionkill信号集信号屏蔽 什么是信号 信号机制是一种使用信号来进行进程之间传递消息的方法,信号的全称为软中断信号,简称软中断。 信号的本质是软件层次上对中断的一种模拟(软中断&#xff…

第26期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练Transformer(GPT)、人工智能生成内容(AIGC)以及大型语言模型(LLM)等安全领域应用的知识。在这里,您可以…

Digicert证书是什么?

DigiCert是全球领先的数字信任提供商,使个人和企业能够自信地在线参与,相信他们在数字世界中的足迹是安全的。DigiCert通过塑造全球行业标准、提供卓越的全球合规性和运营、为公共和私人信任提供证书生命周期管理以及将信任扩展到供应链和互联生态系统&a…

QT实现的一个MVP设计模式demo

最近做qt 项目,发现网上基于MVP设计模式的QT例程很少,这里写一个demo示例可作为参考: 一、简要概述 MVP是由MVC发展而来,总体目的与作用相同。都是为了软件构架有层次之分,使得核心逻辑、界面控制、数据这三者分层清晰明了。减少…

Linux实现进度条小程序(包含基础版本和模拟下载过程版本)

Linux实现进度条小程序[包含基础版本和模拟下载过程版本] Linux实现进度条小程序1.预备的两个小知识1.缓冲区1.缓冲区概念的引出2.缓冲区的概念 2.回车与换行1.小例子2.倒计时小程序 2.基础版进度条1.的回车方式的打印2.百分比的打印3.状态提示符的打印 3.升级版进度条1.设计:进…

虚拟机Linux-Centos系统网络配置常用命令+Docker 的常用命令

目录 1、虚拟机Linux-Centos系统网络配置常用命令2、Docker 的常用命令2.1 安装docker步骤命令2.2 在docker容器中安装和运行mysql 2、dockerfile关键字区别(ADD/COPY,CMD/ENTRYPOINT) 1、虚拟机Linux-Centos系统网络配置常用命令 进入网络配置文件目录 cd /etc/sysconfig/ne…