如何在QGraphicsScene中实现对齐网格?我没有工作

问题描述 投票:0回答:2

我没有任何代码可以展示,因为这是一年多以前的事了。我觉得我用了一个计时器。它没有非常专业的工作。你会怎么做才能使它成为一个平稳的操作员?

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

qt pyqt qgraphicsscene qgraphicsitem snap-to-grid
2个回答
1
投票

这是我的mouseReleaseEventQGraphicsItem的派生类。网格的步长等于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
}

0
投票

重新实施QGraphicsItem::itemChange()以对QGraphicsItem::ItemPositionChange的变化做出反应。别忘了设置QGraphicsItem::ItemSendsGeometryChanges标志。

© www.soinside.com 2019 - 2024. All rights reserved.