-1

我没有任何代码要显示,因为这是一年多以前的事了。我认为我使用了一个计时器。它工作得不是很专业。你会怎么做才能让它成为一个平滑的操作符?

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

4

2 回答 2

1

这是我mouseReleaseEvent的 forQGraphicsItem派生类。Grid 的步长等于 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
}
于 2017-04-25T20:03:38.100 回答
0

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

于 2017-12-30T09:35:11.887 回答