QGraphicsView 更改鼠标样式 以及QGraphicsItem悬停时更改鼠标样式
一个编辑区域,用QGraphi参数View写的,可以放大,鼠标按下后可以拖拽查看,这个时候希望鼠标可以是"小手"抓取的样子.QGraphicsView上有一些个QGraphicsItem,希望鼠标悬停在item上时可以变成四向箭头,然后可以拉伸item.
所以重新了QGraphicsView的
void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
三个方法,并在其中写了判断,
if (m_bDrag)
{
this->setCursor(Qt::OpenHandCursor);
}
QGraphicsItem重写了
void hoverEnterEvent(QGraphicsSceneHoverEvent *event);
void hoverLeaveEvent(QGraphicsSceneHoverEvent *event);
void hoverMoveEvent(QGraphicsSceneHoverEvent *event);
方法,并且也在其中添加了判断,
if (m_bHover)
{
this->setCursor(Qt::SizeAllCursor);
}
但是在运行的时候并没有按照预想的执行,当QGraphicsView中未添加Item的时候,可以显示"小手"的拖拽光标,也可以进行图标切换,但是当添加过item后,
虽然也执行了view中改变鼠标样式的函数,但是并没有效果,当鼠标悬停在Item上方的时候,鼠标样式发生改变.
分析了一下,this->setCursor(Qt::OpenHandCursor);和this->setCursor(Qt::SizeAllCursor);的this并不是一个对象,this是View对象,而this是item对象,
所以在Item的悬停方法中,我改成这样
void MytItem::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
{
if (m_bHover)
{
// 获取当前item所属于的scene,然后获取scene的Views,因为我只有一个View,所以用下标at(0)获取了view
QGraphicsView * view = this->scene()->views().at(0);
// 然后用view设置鼠标样式
view->setCursor(Qt::SizeAllCursor);
}
QGraphicsItem::hoverMoveEvent(event);
}
问题解决,在查找的时候,发现有一篇博客这样写,但是还未验证
解决方法就是在QGraphicsView子类中使用viewport()->setCursor()而不是直接的setCursor(),这样才能真正改变视觉上的鼠标形状。viewport()函数定义在QAbstractScrollArea类中,QGraphicsView继承自QAbstractScrollArea类,对于更新更新视图内容应该用viewport()->update(),而不是直接用update()。
http://blog.csdn.net/afterward___/article/details/46408355
QGraphicsView 更改鼠标样式 以及QGraphicsItem悬停时更改鼠标样式相关推荐
- html鼠标悬停填充表格,鼠标移到表格上时,鼠标所在行放大高亮显示【实例】...
本文给大家介绍一个比较有趣的CSS Table表格,当鼠标移到表格上时,鼠标所在行放大高亮显示. 鼠标所在行放大高亮显示 HTML代码html> Table V01 * { margin: 0p ...
- ajax使鼠标触摸时图片放大,当鼠标移动到图片上时跟随鼠标显示放大的图片效果...
原始状态: 鼠标经过: 无标题文档 $(function(){ var offsetX=20-$("#imgtest").offset().left; var offsetY=20 ...
- dev项目属性按钮是灰色_如何当按钮处于各种交互状态时具有不同样式的按钮?...
Axure RP 9 for Mac是一款交互式原型设计神器,使用axure rp9以最佳的方式展示您的作品,优化现代浏览器并为现代工作流程设计.同时确保您的解决方案正确完整地构建.在本篇文章中,我们 ...
- vue中解决 mouseenter 和 mouseout 时,鼠标进入子组件造成 mouseout 触发而闪烁的问题
解决 mouseenter 和 mouseout 时,鼠标进入子组件造成 mouseout 触发而闪烁的问题 1.需求背景 2.核心解决方法 3.两对鼠标事件的区别 (1)mouseover 和 mo ...
- linux cs go鼠标灵敏度,CSGO鼠标调试方法 选择适合自己的鼠标速度
基本概念:无加速度与精确一比一 地球人都知道控制面板中的"Enhance pointer precision"(提高指针精准度,下文简称EPP)是开启鼠标加速的选项.由于在电竞.作 ...
- 在div 鼠标悬停时改变滚定条样式
通过改变滚动条颜色来实现div 鼠标悬停时 显示滚动条小方块 .panel-cont::-webkit-scrollbar {/*滚动条整体样式*/width: 6px; /*高宽分别对应横竖滚动条的 ...
- html5鼠标悬停图片放大的原理,jQuery当鼠标悬停时放大图片的效果实例
这个效果最初源于小敏同志的一个想法,刚开始做的时候只能实现弹出的图片是固定的,不能随鼠标移动,最后加以改善,终于实现了比较理想的效果.今天就把制作该效果的经验与大家一同分享.先看看最终效果演示: HT ...
- CSS文字超出部分用省略号代替,js鼠标悬停时显示全部文本
需求: 宽度为百分比,随浏览器变化而变化,当窗口变小到一定程度,文字超出部分用省略号代替,当文字出现省略号,需要鼠标悬停时显示全部文本. 文字超出部分用省略号代替 width:overflow: hi ...
- 基于jQuery的鼠标悬停时放大图片的效果制作
这是一个基于jQuery的效果,当鼠标在小图片上悬停时,会弹出一个大图,该大图会跟随鼠标的移动而移动.这个效果最初源于小敏同志的一个想法,刚开始做的时候只能实现弹出的图片是固定的,不能随鼠标移动,最后 ...
最新文章
- linux 相对路径
- -Wl,-rpath=
- 卷积网络的学习(卷积核,通道,padding,stride等概念)
- boost::test模块测试树管理单元测试
- java多线程写在哪一层_面试知识点三:Java多线程
- scn exercise view.setModel will trigger binding creation in Fiori
- 计算机二级mysql报名2020_关于2020年秋季全国计算机等级考试报名的通知
- 1089 狼人杀-简单版 (20 分)
- 软件工程六大设计原则总结,案例演示
- Elasticsearch】es 模糊查询导致Elasticsearch服务宕机
- this调用语句必须是构造函数中的第一个可执行语句_详解-JavaScript 的 this 指向和绑定...
- spring-cloud Sleuth
- mysql inet_aton 与 inet_ntoa 方法
- 【精通内核】CPU控制并发原理CPU中断控制内核解析
- 用Python进行数据整理
- java控制台贪食蛇_java中的贪食蛇例程
- JS+CSS实现漂亮的日历特效(仿win10系统日历)
- Windows10莫名其妙多了个CD驱动器,删除方法记录
- 用你的浏览器来静态分析网站源码——初级漏洞赏金猎人指南
- php增加vip等级设置,会员管理系统中商家如何设置会员等级
热门文章
- 3208点阵时钟c语言程序,点阵万年历(带时间、年月日星期调整及闹钟功能)C程序...
- 【2019南昌邀请赛现场赛 - G】Winner(思维、图论+缩点)
- DBpedia Introduction
- 阿里数据仓库-数据模型建设方法总结(全)
- SPI Flash芯片W25Q32英文版数据手册解读(一)---------引脚功能,工作模式
- 在计算机网络的s,在计算机网络中传输二进制信息时,经常使用的速率单位有“kb/s”、“Mb/s”等。其中,1Mb/s=1000kb/s...
- python 三维曲线拟合_python实现三维拟合的方法
- Sql Server 创建唯一聚集索引典型实现
- 解决阿里云OSS使用URL无法访问图片
- 【翻译】MED 3D: TRANSFER LEARNING FOR 3D MEDICAL I MAGE ANALYSIS