안녕하세요. 읽고 감사드립니다. QGraphicsView에서 마우스를 드래그하는 동안 여러 QGraphicsItems의 위치를 올바르게 양자화하는 데 문제가 있습니다. 내가 설정 한 시스템은 QGraphicsItem을 한 번에 하나씩 만 드래그하면 올바르게 양자화됩니다. 그러나 여러 항목을 선택하고 드래그하면 주 항목 (마우스 바로 아래에있는 항목) 만 양자화되며 나머지는 지속적으로 설정됩니다. . 어떤 도움을 주셔서 감사합니다. 관련 코드는 다음과 같습니다.QGraphicsView에서 마우스를 드래그하는 동안 여러 QGraphicsItems의 위치를 양자화하는 방법은 무엇입니까?
QGraphicsRectItem에서 상속받은 MutaEvent라는 클래스에 있습니다. 나는() 함수를 mouseMoveEvent()와 setPos를 재정의 한 :
이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;
}
이 어떤 도움이 많이 주시면 감사하겠습니다 :
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);
}
다음 비트가 무타라는 네임 스페이스의 정적 기능입니다!