事件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,一经查实,立即删除!

相关文章

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

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

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

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

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

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

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

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

27_电子电路设计基础

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

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

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

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…

Spring Cloud: Nacos配置中心与注册中心的使用

一、配置中心(配置管理) 配置中心是一种集中化管理配置的服务。它的主要作用包括集中管理配置信息&#xff0c;将不同服务的配置信息集中存储和管理&#xff1b;支持动态更新配置&#xff0c;通过操作界面或 API 无需重启服务即可应用最新配置信息&#xff1b;实现配置信息共享…

如何解决亚马逊环境技术问题?自养号测评助力下单成功率飙升

在构建针对测评任务的环境系统时&#xff0c;确保系统的稳定性和操作成功率至关重要。面对市场上纷繁复杂的解决方案&#xff0c;如虚拟机、模拟器、GCS服务、云手机及VPS等&#xff0c;虽选择众多&#xff0c;但往往伴随着高昂成本与低成功率的挑战。因此&#xff0c;构建一个…

数据库课设---酒店管理系统(MySQL、VBNet)

目录 一. 知识技术 二. 需求分析 2.1 功能需求 2.2 数据需求 三. 数据流图与数据字典 3.1 数据流图 3.1.1 业务流图 3.1.2 数据流图 3.1.3 关系图 3.2 数据字典 四. 数据库设计 4.1 概念模型设计 4.2 逻辑模型设计 4.3 数据库实现 …

网络规划与设计————期末复习

一、选择题&#xff08;每题1分&#xff09; 1、光纤线组建的标准以太网是______。 A.10BASE-5 B.10BASE-2 C.10BASE-T D.10BASE-F 其实也很好记&#xff0c;光纤的英文是 "Fiber Optic"&#xff0c;双绞线的英文是 "Twisted Pair"。 5呢…

苹果电脑压缩软件哪个好用一些? mac电脑用什么压缩软件 mac电脑压缩文件怎么设置密码

压缩软件是Mac电脑必不可少的工具&#xff0c;虽然Mac系统自带了一款“归档实用工具”&#xff0c;但是其功能实在匮乏&#xff0c;若你需要加密压缩文件或者把文件压缩成指定格式&#xff0c;那么该工具无法满足你的需求。Mac用户应该怎么选择压缩软件呢&#xff1f;本文就来告…

股票数据分析(K线图、均值图、MACD图、RSI图)--股票日数据

数据 数据是上证指数日行情数据&#xff0c;股票代码000002.sz&#xff0c;原始数据shdata示例如下&#xff1a; 读取数据&#xff1a; import numpy as np import pandas as pd import mplfinance as mpf import matplotlib.pyplot as plt from datetime import datetime imp…

出书流程/专著/合著/年内下号

出书流程/专著/合著/年内下号 年内书号&#xff0c;年内书号&#xff0c;年内书号 独著&#xff0c;合著&#xff0c;一书一号&#xff0c;正规出版。省级出版社&#xff0c;国家级出版社&#xff0c;985&#xff0c;211大学出版社&#xff0c;百佳出版社&#xff0c;均可安排…

刷题之删除有序数组中的重复项(leetcode)

删除有序数组中的重复项 这题简单题&#xff0c;双指针&#xff0c;一个指针记录未重复的数的个数&#xff0c;另一个记录遍历的位置。 以下是简单模拟&#xff0c;可以优化&#xff1a; class Solution { public:int removeDuplicates(vector<int>& nums) {int l0…

JVM专题之G1垃圾收集器下

索引(记录)的源码的工作流程图如下: CSet(Collection Set 回收集合) 收集集合(CSet)代表每次GC暂停时回收的一系列目标分区。在任意一次收集暂停中,CSet所有分区都会被释放,内部存活的对象都会被转移到分配的空闲分区中。因此无论是年轻代收集,还是混合收集,工作的机…