说明
在QGraphicsView视图下,对item的鼠标左键的拖动事件由函数mouseMoveEvent()接收。实现拖动功能需要设置item为"可选中"和"可拖动,该设置通过函数setFlags()实现。
函数
- virtual void QGraphicsItem::mouseMoveEvent(QGraphicsSceneMouseEvent * event)
- void QGraphicsItem::setFlags(GraphicsItemFlags flags)
释义
- 鼠标移动(拖动)事件。重新实现该函数即可接收到鼠标的item拖动事件。通过函数event->pos()获得鼠标在item中的当前坐标。
- 设置标记。枚举类型GraphicsItemFlags包含了一些可设置的item功能标记,这些功能可叠加设置。见下表
项 | 说明 |
---|---|
QGraphicsItem::ItemIsSelectable | 可选中 |
QGraphicsItem::ItemIsMovable | 可移动 |
QGraphicsItem::ItemIsFocusable | 可获得焦点 |
示例
...
//设置item可选中且可移动
setFlags(QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsMovable);
...
void mouseMoveEvent(QGraphicsSceneMouseEvent * event){
cout << "mouseMoveEvent - "
<< (float)(event->pos().x()) << ","
<< (float)(event->pos().y()) << endl;
QGraphicsItem::mouseMoveEvent(event);
}