qt qgraphicsitem怎么才能用鼠标拖动,用c++
时间: 2023-08-17 15:39:21 浏览: 100
C++ Qt 实现鼠标拖动旋转功能
要在Qt中使用QGraphicsItem进行鼠标拖动,您需要重载QGraphicsItem的mousePressEvent、mouseMoveEvent和mouseReleaseEvent函数。
以下是一个简单的示例,演示如何使用QGraphicsItem实现鼠标拖动:
```c++
class MyGraphicsItem : public QGraphicsItem
{
public:
MyGraphicsItem(QGraphicsItem *parent = nullptr) : QGraphicsItem(parent)
{
setFlag(QGraphicsItem::ItemIsMovable);
}
protected:
void mousePressEvent(QGraphicsSceneMouseEvent *event) override
{
if (event->button() == Qt::LeftButton)
setCursor(Qt::ClosedHandCursor);
}
void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override
{
if (event->buttons() & Qt::LeftButton)
{
QPointF newPos = event->scenePos();
setPos(newPos);
}
}
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override
{
setCursor(Qt::OpenHandCursor);
}
};
```
在此示例中,我们将QGraphicsItem的ItemIsMovable标志设置为true,以启用它的可移动性。然后,在mousePressEvent中设置光标形状,在mouseMoveEvent中更新位置,在mouseReleaseEvent中还原光标形状。这样,您就可以通过鼠标拖动QGraphicsItem来移动它了。
阅读全文