如果你的QGraphicsWidget、QGraphicsItem无法相应鼠标、键盘消息,请参考《QGraphicsWidget收不到鼠标、键盘消息解决》
两种方法
方法1:
先通过下面的代码设置被拖动想的属性:
setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsFocusable | QGraphicsItem::ItemSendsGeometryChanges | QGraphicsItem::ItemUsesExtendedStyleOption);
如果你的视图是继承自QGraphicsView,则在重载鼠标移动事件时,基类QGraphicsView的鼠标移动事件请不要屏蔽,否则不能移动项,如下:
void GraphicsView::mouseMoveEvent(QMouseEvent *event)
{
// 这里根据业务写你需要的代码
QGraphicsView::mouseMoveEvent(event); // 这句不能漏掉,否则项不能移动
}
即上面的QGraphicsView::mouseMoveEvent(event); 这句不能漏掉,否则项不能移动。
方法2:
重写鼠标事件
继承QGraphicsItem,重写mousePressEvent、mouseMoveEvent和mouseReleaseEvent三个函数。
void BreakerItem::mousePressEvent( QGraphicsSceneMouseEvent* event )
{
m_mousePressed=true;
m_mousePressedPoint=this

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



