QGraphicsItem
的mouseMoveEvent()函数
必须鼠标按下
的情况下进行move才会触发。
QWidget
的
mouseMoveEvent()
函数可以通过设置
setMouseTracking(true)
在鼠标
不需要按下
的情况下,触发鼠标move事件。
QGraphicsItem要实现鼠标不按下的情况下,获取鼠标move事件,可通过**hoverMoveEvent()
来实现,可通过设置
setAcceptHoverEvents(true)**使其生效
补充:查看hoverMoveEvent()帮助文档,有一句话是这样说的,Calling QEvent::ignore() or QEvent::accept() on event has no effect.
说明hoverMoveEvent()事件是一个截断事件,无法通过ignore和accept进行传输。类似还有hoverEnterEvent()和hoverLeaveEvent()等其他相关的sceneEvent。(sceneEvent()帮助文档中有一句话:event is the intercepted event 事件是截断事件)
QGraphicsItem的mouseMoveEvent()函数必须鼠标按下的情况下进行move才会触发。QWidget的mouseMoveEvent()函数可以通过设置setMouseTracking(true)在鼠标不需要按下的情况下,触发鼠标move事件。QGraphicsItem要实现鼠标不按下的情况下,获取鼠标move事件,可通过**hoverMoveEvent()来实现,可通过设置...
graphics体系中graphicsitem重载鼠标事件,item只触发press事件,没有触发move和release事件,scene和view都能触发press、move、release事件。
经过看帮助文档,查看graphicsitem
mousemove
event
的说明
翻译后是:
可以重新实现用于事件事件的该事件处理程序,以接收该项目的鼠标移动事件。 如果确实收到此事件,则可以确定该项目也收到了鼠标按下事件,并且该项目是当前的鼠标捕获器。
在事件上调用Q
Event
:: ignore
开启鼠标悬停事件意味着当鼠标悬停在该item下时,可由
hover
Move
Event
()
函数
接收到鼠标的移动事件。开启方法:
set
Accept
Hover
Events
(true)。
void
QGraphicsItem
::
set
Accept
Hover
Events
(bool enabled)
virtual void
QGraphicsItem
::
hover
Move
Event
(QGraphicsScene
Hover
Event
*
event
)
设置接受悬停事件。enabled设置为t
protected: //标题栏的拖拽
void
mouse
Press
Event
(Q
Mouse
Event
*
event
);
void
mouseMove
Event
(Q
Mouse
Event
*
event
);
void
mouse
Release
Event
(Q
Mouse
Event
*
event
);
QPoint last;
//标题栏的拖拽,鼠标不在标题栏范围内无效
void
mouse
Press
Event
(Q
Mouse
Event
*
event
)
在GraphicsItem 中我设置了
set
Accept
Hover
Events
(true);
item加入到scene
scene加入到View,在View中
mouseMove
Event
中为什么他就自动触发了
设置
set
Mouse
Tracking
(fal
一个编辑区域,用QGraphi参数View写的,可以放大,鼠标按下后可以拖拽查看,这个时候希望鼠标可以是"小手"抓取的样子.QGraphicsView上有一些个
QGraphicsItem
,希望鼠标悬停在item上时可以变成四向箭头,然后可以拉伸item.
所以重新了QGraphicsView的
void
mouse
Press
Event
(Q
Mouse
Event
*
event
);
void mo
This property holds whether
mouse
tracking
is enabled for the widget
这个属性保存了控件是否打开了鼠标追踪
If
mouse
tracking
is disabled (the default), the widget only receives
mouse
move
events
when at least one
mouse
button is pressed while the
mouse
is
Header: #include <
QGraphicsItem
>
qmake: QT += widgets
Inherited By: QAbstractGraphicsShapeItem,
QGraphicsItem
Group, QGraphicsLineItem, QGraphicsObject, and QGraphicsPixmapItem;
//此枚举描述
QGraphicsItem
的缓存模式。缓存通过分配和渲染到屏幕外像素缓冲区来加速渲.
QGraphicsObject和
QGraphicsItem
都是Qt5中的图形对象,但是它们并不相同。
QGraphicsItem
是Qt图形框架中的一个基础类,是所有可展示的图形项的基类,包括了常见图形项如线条、矩形、椭圆、多边形、文本等。
QGraphicsItem
的作用是封装了图形项的位置、大小、外观和交互行为等属性,并提供了一些操作这些属性的方法。
QGraphicsObject是
QGraphicsItem
的派生类,虽然功能与
QGraphicsItem
类似,但QGraphicsObject提供了更多高级的特性。比如,它可以利用Qt的元对象系统,并支持Qt的信号和槽机制,使得图形对象与应用程序的其他组件之间的交互更加方便。此外,QGraphicsObject还可以支持事件、动画、属性动画等高级特性。
总的来说,
QGraphicsItem
通常用于绘制简单的图形对象,而QGraphicsObject则更多地用于创建交互式的复杂的图形对象。
C++数据序列化(自定义结构体的保存和读取)
录制屏幕: