Qt 用鼠标悬停移动QGraphicsItem
我试图将鼠标悬停在父项上,移动一个Qt 用鼠标悬停移动QGraphicsItem,qt,draggable,Qt,Draggable,我试图将鼠标悬停在父项上,移动一个QGraphicsItem BaseItem::BaseItem(const QRectF &bounds) : theBounds(bounds), theMousePressed(false) { theLineItem = new LineItem(theBounds, this); setAcceptHoverEvents(true); } 及 但是这个项目没有移动。是否有其他方法可以在不使用ItemIsMovabl
QGraphicsItem
BaseItem::BaseItem(const QRectF &bounds)
: theBounds(bounds), theMousePressed(false)
{
theLineItem = new LineItem(theBounds, this);
setAcceptHoverEvents(true);
}
及
但是这个项目没有移动。是否有其他方法可以在不使用
ItemIsMovable
标志的情况下,通过鼠标移动场景中的项,因为我希望在调用该项后,该项将围绕父项移动?创建LineItem时,在其构造函数中传递BaseItem作为父项
在GraphicsItem上调用setPos,设置项相对于其父项的位置,在本例中,父项是BaseItem
将事件->pos()映射到场景坐标在这里是错误的。event->pos()返回接收对象的本地坐标位置,在本例中为BaseItem
因此,您应该直接使用event->pos()设置LineItem的位置
请注意,如果您确实希望事件位置位于场景坐标中,则已有一个函数可用:-
event->scenePos();
因此,您不需要调用mapToScene。创建LineItem时,在其构造函数中传递BaseItem作为父项 在GraphicsItem上调用setPos,设置项相对于其父项的位置,在本例中,父项是BaseItem 将事件->pos()映射到场景坐标在这里是错误的。event->pos()返回接收对象的本地坐标位置,在本例中为BaseItem 因此,您应该直接使用event->pos()设置LineItem的位置 请注意,如果您确实希望事件位置位于场景坐标中,则已有一个函数可用:-
event->scenePos();
所以您不需要调用mapToScene
event->scenePos();