我没有任何代码可以展示,因为这是一年多以前的事了。我觉得我用了一个计时器。它没有非常专业的工作。你会怎么做才能使它成为一个平稳的操作员?
我已经能够有效地绘制网格(即仅在视图中)。我只需要捕捉算法。
这是我的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::ItemSendsGeometryChanges
标志。