Qt 如何在QGraphicscene中实现网格捕捉?我的没有';行不通

Qt 如何在QGraphicscene中实现网格捕捉?我的没有';行不通,qt,pyqt,qgraphicsscene,qgraphicsitem,snap-to-grid,Qt,Pyqt,Qgraphicsscene,Qgraphicsitem,Snap To Grid,我没有任何代码可以显示,因为这是一年前的事了。我想我用的是计时器。从专业角度看,这并不奏效。你将如何做,使它是一个平滑的操作符 我已经能够有效地绘制网格(即仅在视图中)。我只需要捕捉算法。这是我的mouseReleaseEvent用于QGraphicsItem的派生类。网格的步长等于5: void RadBox::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { double xx=x(); double yy=y();

我没有任何代码可以显示,因为这是一年前的事了。我想我用的是计时器。从专业角度看,这并不奏效。你将如何做,使它是一个平滑的操作符


我已经能够有效地绘制网格(即仅在视图中)。我只需要捕捉算法。

这是我的
mouseReleaseEvent
用于
QGraphicsItem
的派生类。网格的步长等于5:

void RadBox::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
    double xx=x();
    double yy=y();
    if((int)xx / 5 != xx/5.) xx=5.0*round(xx/5.);
    if((int)yy / 5 != yy/5.) yy=5.0*round(yy/5.);
    setPos(xx,yy);
    QGraphicsItem::mouseReleaseEvent(event);
    emit moveBox(id,scenePos().x(),scenePos().y()); // you don't need this line, it's specific to my program
}

重新实施
QGraphicsItem::itemChange()
以对
QGraphicsItem::ItemPositionChange
更改作出反应。不要忘记设置
QGraphicsItem::itemssendsgeometrychanges
标志。

许多不同的东西可以通过许多不同的方式捕捉到网格。您试图实现的具体行为是什么?请从用户的角度详细描述交互(编辑问题,然后将此评论标记为过时)。