X 축의 스크롤 막대처럼 작동하도록 기본 동작을 변경하지 않고 QGraphicsItem
(특히 QGraphicsRectItem
)의 움직임을 올바르게 제한하려고합니다.mouseMoveEvent를 사용하여 QGraphicsItem 이동을 제한합니다.
mouseMoveEvent
함수를 재정의하려했지만 X 및 Y 방향 모두에서 사각형의 동작을 다시 작성해야합니다. 기껏해야 사각형을 마우스로 단일 위치에 스냅 할 수 있습니다. 내가 지금 itemChange
찾고 있어요
void SegmentItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
setY(0);
setX(event->scenePos().x() - boundingRect().width()/2);
}
here 설명 된대로,하지만 정확히 우아한 조금 다루기가 아닌 외모 : (여기에 사각형 그래서 마우스가 중간에 그것을 보유하고 스냅됩니다). 편집 :이 작동해야하지만 현재 작동하도록 강제 수 없습니다.
y 축 이동을 제한하는 방법이 있습니까? (나는 나중에 스크롤에 대한 endstops을 만들 수 있지만 필요가있을 것이다.) 나는 itemChange
클래스 참조 페이지에서 코드를 만지작 거렸다, 그래서 내 QGraphicsRectItem
의 네 모서리가 QGraphicsScene
내에서 머물 것을 강화
변경된 솔루션은 솔루션이며, 실제로는 매우 우아합니다. – Fabio
쿨하지만 현재 어떤 것도 제한하지 않는 것 같습니다. 읽은 _ _ "기본 구현은 아무 것도하지 않고 값을 반환합니다."[클래스 참조 페이지] (http://doc.qt.io/qt-4.8/qgraphicsitem.html#itemChange) 내가 필요한 것을 알고 있습니까? 바꾸다? –