添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

QGraphicsView 视图下,对item的鼠标左键的拖动事件由函数mouseMoveEvent()接收。实现拖动功能需要设置item为"可选中"和"可拖动,该设置通过函数setFlags()实现。

  1. virtual void QGraphicsItem :: mouseMoveEvent (QGraphicsSceneMouseEvent * event)
  2. void QGraphicsItem :: setFlags (GraphicsItemFlags flags)
  1. 鼠标移动(拖动)事件 。重新实现该函数即可接收到鼠标的item拖动事件。通过函数event->pos()获得鼠标在item中的当前坐标。
  2. 设置标记 。枚举类型 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); QT GraphicsView框架的应用,对自定义Rect Item 通过控制点Agent Item 调整尺寸, Item 成组,解组的具体用法,给学习 Qt 组态软件编写提供很大帮助。 程序需要 Qt 4.7.4支持,Vs2008环境。 Qt 中提供的 Item 未必能够满足需要,因此有必要实现自定义的 QGraphicsItem 对象。与QPushButton一样,如果发生鼠标 事件 ,那么为了更换被点击按钮的图像,可以使用paint实现用户自定义 QGraphicsItem 。 2.一个简单的实验 #include #include "My Item .h" #include #include #define W QGraphicsItem s收不到消息分有好几种情况。除了错误的代码外,还有一些对 Qt 原理理解上的问题( Qt 埋下的坑)。 情况 (1)如果是mouseMoveEvent收不到消息,而mousePressEvent能收到消息,则往往在mousePressEvent中不能把消息传递给父类。例如 void QGraphicsEllipseSub Item ::mousePressEvent(QGraphicsSceneMouseEvent *event){ qDebug() << "elli Qt 提供了 QGraphicsItem 类来创建可在 QGraphicsScene 中显示的图形项。要使图形项可以被 拖动 ,可以使用 setFlag( QGraphicsItem :: Item IsMovable) 方法;要使图形项可以被缩放,可以使用 setFlag( QGraphicsItem :: Item IsScaleable) 方法;要使图形项可以被旋转,可以使用 setFlag(QGraphics... 功能需求,在 QGraphicsView 中显示一张图像,如下图,鼠标点击图片时返回图片坐标系内的像素坐标,但是点击边上空白部分时不返回坐标。 实现思路是子类化 QGraphicsView ,QGraphicsScene, QGraphicsPixmap Item ,并重写鼠标点击 事件 函数mousePressEvent(QGraphicsSceneMouseEvent* event)。光标默认的样式是手型