こんにちは、読んでくれてありがとう。QGraphicsViewでマウスをドラッグしているときに、複数のQGraphicsItemの位置を正しく量子化するのに問題があります。私がセットアップしたシステムは、一度に1つだけドラッグすると、QGraphicsItemを正しく量子化しますが、複数選択してドラッグすると、プライマリアイテム(マウスの真下にあるもの)のみが量子化され、残りのアイテムの位置は継続的に設定されます。私はこれでどんな助けでも大いに感謝します。関連するコードは次のとおりです。
これは、QGraphicsRectItemから継承するMutaEventと呼ばれるクラスにあります。mouseMoveEvent()関数とsetPos()関数を再定義しました。
void MutaEvent::mouseMoveEvent( QGraphicsSceneMouseEvent * event )
{
QGraphicsRectItem::mouseMoveEvent(event);
setPos(pos());
}
void MutaEvent::setPos(const QPointF &pos)
{
QGraphicsRectItem::setPos(Muta::quantizePointD(pos,30,15));
emit posChanged(objectID,pos);
}
次のビットは、Mutaと呼ばれる名前空間の静的関数です。
static QPointF quantizePoint(QPointF point,double xQuant, double yQuant)
{
double x = quantize(point.x(),xQuant);
double y = quantize(point.y(),yQuant);
QPointF quantPoint(x,y);
return quantPoint;
}
どんな助けでも大歓迎です!