事件mousePressEvent、paintEvent、closeEvent、keyPressEvent】

事件 mousePressEvent、paintEvent、closeEvent、keyPressEvent

鼠标样式的设置

按WSAD通过keyPressEvent事件移动按钮

通过事件mousePressEvent获取鼠标位置的相对位置,绝对位置

cusor 鼠标样式设置成十字星

.h

#ifndef DEFAULTHANDLEREXAMPLE_H
#define DEFAULTHANDLEREXAMPLE_H#include <QWidget>
#include <QPaintEvent>namespace Ui {
class DefaultHandlerExample;
}class DefaultHandlerExample : public QWidget
{Q_OBJECT
protected:void paintEvent(QPaintEvent *event);void closeEvent(QCloseEvent *event);void keyPressEvent(QKeyEvent *event);void showEvent(QShowEvent *event);void hideEvent(QHideEvent *event);void mousePressEvent(QMouseEvent *event);public:explicit DefaultHandlerExample(QWidget *parent = nullptr);~DefaultHandlerExample();private:Ui::DefaultHandlerExample *ui;
};#endif // DEFAULTHANDLEREXAMPLE_H

.cpp

#include "defaulthandlerexample.h"
#include "ui_defaulthandlerexample.h"#include <QMessageBox>
#include <QPainter>DefaultHandlerExample::DefaultHandlerExample(QWidget *parent): QWidget(parent), ui(new Ui::DefaultHandlerExample)
{ui->setupUi(this);this->setMouseTracking(false);//只有按下鼠标才会跟踪
}DefaultHandlerExample::~DefaultHandlerExample()
{delete ui;
}
void DefaultHandlerExample::paintEvent(QPaintEvent *event)
{Q_UNUSED(event);QPainter painter(this);painter.drawPixmap(0,0,this->width(),this->height(),QPixmap(":/toolbar/images/background.jpg"));
}void DefaultHandlerExample::closeEvent(QCloseEvent *event)
{QString dlgTitle ="提示";QString strInfo ="确定要退出吗?";QMessageBox::StandardButton result=QMessageBox::question(this,dlgTitle,strInfo,QMessageBox::Yes|QMessageBox::No|QMessageBox::Cancel);if(result== QMessageBox::Yes)event->accept();//窗口确认关闭elseevent->ignore();//忽略
}void DefaultHandlerExample::keyPressEvent(QKeyEvent *event)
{QPoint pt = ui->btnMove->pos();if((event->key()== Qt::Key_A)|| (event->key()==Qt::Key_Left))ui->btnMove->move(pt.x()-20,pt.y());if((event->key()== Qt::Key_D)|| (event->key()==Qt::Key_Right))ui->btnMove->move(pt.x()+20,pt.y());if((event->key()== Qt::Key_W)|| (event->key()==Qt::Key_Up))ui->btnMove->move(pt.x(),pt.y()-20);if((event->key()== Qt::Key_S)|| (event->key()==Qt::Key_Down))ui->btnMove->move(pt.x(),pt.y()+20);// this->setWindowTitle(event->ke);
}void DefaultHandlerExample::showEvent(QShowEvent *event)
{Q_UNUSED(event);ui->label->setText("showEvent函数被触发");
}void DefaultHandlerExample::hideEvent(QHideEvent *event)
{Q_UNUSED(event);ui->label->setText("hideEvent函数被触发");
}void DefaultHandlerExample::mousePressEvent(QMouseEvent *event)
{if(event->button()==Qt::LeftButton){QPoint pt = event->pos(); //窗口上的相对坐标QPointF relaPt = event->position(); //相对坐标QPointF winPt = event->scenePosition();//相对坐标QPointF globalPt = event->globalPosition();//屏幕上的绝对坐标QString str = QString::asprintf("pos()=(%d,%d)",pt.x(),pt.y());str+= QString::asprintf("\nposition()=%.0f,%.0f",relaPt.x(),relaPt.y());str+= QString::asprintf("\nscenePosition()=%.0f,%.0f",winPt.x(),winPt.y());str+= QString::asprintf("\nglobalPosition()=%.0f,%.0f",globalPt.x(),globalPt.y());ui->label->setText(str);ui->label->adjustSize();ui->label->move(event->pos());//标签移动到鼠标光标处}QWidget::mousePressEvent(event);
}

效果

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

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

相关文章

C++ 11 智能指针使用详解

文章目录 C++ 11 智能指针使用详解一、智能指针的介绍1. `std::unique_ptr`2. `std::shared_ptr`3. `std::weak_ptr`二、智能指针的基本使用方法1. 创建和初始化智能指针使用 `std::unique_ptr`:使用 `std::shared_ptr`:2. 访问指针指向的对象使用 `std::unique_ptr`:使用 `…

GANs算法简介、学习步骤及具体实现

生成对抗网络&#xff08;Generative Adversarial Networks&#xff0c;GANs&#xff09;自从2014年由Ian Goodfellow等人提出以来&#xff0c;已经成为深度学习领域中最活跃的研究方向之一。GAN的基本思想是利用两个神经网络——生成器&#xff08;Generator&#xff09;和判别…

供应MT7628AN芯片现货

长期供应各品牌芯片现货&#xff1a; MT7628AN VC7920-11 QM77043 QM78207 QM77043 SD18-0847R8UUB1 QM78207 QPF4588TR13-5K D5DA782M0K2J6 SAYRH725MBA0B0A QM56023TR13-5K D5DA737M5K2H2 HS8443-61 RF5422 QM56021TR13-5K S55643-11 OM8816-61…

做好私域服务就是赢得用户的心

私域流量的概念在当今的商业环境中已经变得极为重要&#xff0c;许多品牌和企业都投入大量资源尝试通过各种策略吸引并保留用户。然而&#xff0c;单纯的流量积累并不足以确保商业成功。当面对用户的沉默、缺乏活跃度以及无法变现的困境时&#xff0c;我们必须重新审视私域流量…

Perforce发布白皮书,解读电动汽车初创公司如何加速进入市场并降低软件开发中的风险和成本

电动汽车&#xff08;EV&#xff09;领域的初创企业正迅速崛起&#xff0c;创新速度显著加快。然而&#xff0c;随着消费者对电动汽车需求的激增&#xff0c;老牌汽车制造商正加速进军这一市场&#xff0c;加剧了行业竞争。为在竞争中生存并发展&#xff0c;电动汽车初创企业必…

硬盘错误0x80071ac3如何修复?5大免费修复法,轻松找回硬盘数据

今天我们要聊的是一个让大家头疼不已的问题——硬盘错误0x80071ac3。你是否也曾经遇到过这个烦人的错误代码&#xff0c;导致数据无法读取、文件丢失&#xff0c;甚至整个硬盘都无法正常使用&#xff1f;别担心今天小编就为大家详细解析这个错误的原因&#xff0c;并分享5个免费…

远程Linux机器图形化界面使用及音频转发

对于一些远程Linux云机器&#xff0c;一般我们在使用时通过各种ssh连接工具连接&#xff0c;并使用命令行方式操作&#xff0c;但是部分需要图形化界面验证的应用&#xff0c;必须需要使用到远程机器的图形化功能&#xff0c;本文记录总结一些跟远程使用Linux机器图形化界面以及…

27_电子电路设计基础

电路设计 电路板的设计 电路板的设计主要分三个步骤&#xff1a;设计电路原理图、生成网络表、设计印制电路板。 (1)设计电路原理图&#xff1a;将元器件按逻辑关系用导线连接起来。设计原理图的元件来源是“原理图库”,除了元件库外还可以由用户自己增加建立新的元件&#…

MySQL8之mysql-community-server的作用

MySQL8之mysql-community-server的作用主要体现在以下几个方面&#xff1a; 1. 提供开源的MySQL数据库服务 mysql-community-server是MySQL的一个开源版本&#xff0c;它是MySQL AB在2000年推出并由Oracle公司维护和管理的一个关系型数据库系统。这个服务器软件支持多种类型的…

WAIC | 2024年世界人工智能大会“数学与人工智能”学术会议成功举办!

由斯梅尔数学与计算研究院&#xff08;Smale Institue of Mathematics & Computation&#xff09;主办的2024年世界人工智能大会(WAIC)“数学与人工智能”学术会议7月4日在上海世博中心圆满落幕&#xff01;作为全球性高级别学术研讨会&#xff0c;此次会议由华院计算技术&…

相机光学(二十八)——感光度(ISO)

感光度又称为ISO&#xff0c;是指相机对光线的敏感程度。ISO值越大&#xff0c;感光度越高&#xff0c;拍出来的照片就会越亮&#xff0c;反之就会越暗。但是ISO过高会使照片噪点也随之变高。感光度&#xff0c;又称为ISO值&#xff0c;是衡量底片对于光的灵敏程度&#xff0c;…

22. Java ReentrantLock 使用

1. 前言 本节内容主要是对 ReentrantLock 的使用进行讲解,之前对于 Lock 接口进行了讲解,ReentrantLock 是 Lock 接口的常用实现子类,占据着十分重要的地位。本节内容的知识点如下: ReentrantLock 基本方法的使用,即 lock 与 unlock 方法的使用,这是最基础的方法使用,为…

Python 修改 pip 源

1.临时换源&#xff1a; #清华源 pip install markdown -i https://pypi.tuna.tsinghua.edu.cn/simple # 阿里源 pip install markdown -i https://mirrors.aliyun.com/pypi/simple/ # 腾讯源 pip install markdown -i http://mirrors.cloud.tencent.com/pypi/simple # 豆瓣源 …

html+js+css练手小项目

文章目录 练手小项目前言1.多轮播图1.1 效果展示1.2 实现思路1.2.1 三张轮播图1.2.2 左侧轮播图 1.2.3 右侧轮播图1.2.4 整体结合 2.图片变色2.1 效果展示2.2 实现 练手小项目 ☀️作者简介&#xff1a;大家好我是言不及行yyds &#x1f40b;个人主页&#xff1a;言不及行yyds的…

字节码编程javassist之打印方法耗时和入参

写在前面 本文看下如何实现打印方法耗时和入参。 1&#xff1a;程序 需要增强的类&#xff1a; public class ApiTest1 {public Integer strToInt(String str01, String str02) {return Integer.parseInt(str01);}}插桩类 package com.dahuyou.javassist.huohuo.aa;import…

tableau条形图绘制 - 2

tableau条形图绘制 1. 条形图绘制-11.1 创建工作表1.2 修改工作表名称1.3 条形图绘制1.4 显示标签1.5 行列转换 2. 条形图绘制-22.1 新建工作表2.2 修改工作表名称2.3 条形图绘制2.4 价格度量选平均值2.5 标签度量选平均值2.6 升序&#xff0c;整个视图显示2.7 行列转换 3. 堆积…

模型训练结果可视化

&#x1f4da;博客主页&#xff1a;knighthood2001 ✨公众号&#xff1a;认知up吧 &#xff08;目前正在带领大家一起提升认知&#xff0c;感兴趣可以来围观一下&#xff09; &#x1f383;知识星球&#xff1a;【认知up吧|成长|副业】介绍 ❤️如遇文章付费&#xff0c;可先看…

AntDesign上传组件upload二次封装+全局上传hook使用

文章目录 前言a-upload组件二次封装1. 功能分析2. 代码详细注释3. 使用到的全局上传hook代码4. 使用方式5. 效果展示 总结 前言 在项目中&#xff0c;ant-design是我们常用的UI库之一&#xff0c;今天就来二次封装常用的组件a-upload批量上传组件,让它用起来更方便。 a-uploa…

UWA学堂上新|MMO游戏创建加载游戏角色对应服务器数据存储和读取

课程是《基于.NetCore开发MMORPG分布式游戏服务器》系列课程第5节&#xff0c;课程旨在帮助大家从零开始搭建商业化MMORPG的分布式服务器框架&#xff0c;包括不同种类服务器的线程模型&#xff0c;如中心服务器、网关服务器、游戏服务器、寻路服务器等&#xff0c;并讲解了这些…

备忘录模式在金融业务中的应用及其框架实现

引言 备忘录模式&#xff08;Memento Pattern&#xff09;是一种行为设计模式&#xff0c;它允许在不破坏封装的情况下捕获和恢复对象的内部状态。备忘录模式通过保存对象的状态来实现撤销操作。该模式通常用于需要保存历史状态的应用中&#xff0c;例如编辑器、事务管理等。在…