문제

Qt QGraphicsScene 제공하는 몇 가지 좋은 기능성의 상자사용자가 선택할 수 있는 물체 주위에 이동합니다.

내가 원하는 것을 하나 더-알림을 받을 때 사용자가 완성되는 이동 객체입니다.있는 낮은 수준의 이벤트처럼,마우스 이동,프레스,자료,하지만 내가 좋아하지 않을 다시 구현 기능이 이미 있는(이동 객체가).

http://doc.trolltech.com/4.2/qgraphicsitem.html#itemChange 방법처럼 보이지만,그것은이라고 할 때 사용자의 움직임을 개체.

내가 사용하는 Qt4.6

그것은 밝혀 있을 설정하는 플래그를 사용하려면 이 이벤트:항목->setFlag(QGraphicsItem::ItemSendsGeometryChanges,true);

하지만 지금은 이벤트가 발생되는 모든 시간은 항목의 corrdinates 변경합니다.나는 원하는 이벤트는 경우에만 변경하여 수행됩니다.

도움이 되었습니까?

해결책

가장 좋은 방법은 항목에 대한 MouserElease 이벤트를 구현하는 것입니다. 해고되면 항목이 이동했는지 여부를 알 수 있습니다. 항목이 이동 한 경우 이벤트를 수락하면 이벤트를 기본 클래스로 보냅니다.

예를 들어:

 void YourItem::mouseReleaseEvent(QMouseEvent *event)
 {
     if (wasMoved()) {
         //do something and accept the event
     } else {
         // to the base class
         QGraphicsItem::mouseReleaseEvent(event);
     }
 }

WASMOVED ()는 항목이 이동했는지 알 수있는 방법입니다.

다른 팁

것을 제외하고 작동할 수 없으로 항상 당신은 항상 하지 않을 얻을 mouseReleaseEvent...

코드는 일을 끌어 차단 코드 그러나,그래서 당신은 그것을 둘 수 있 있으로,코드가 만진 후에도 계속 출시 마우스 단추고 그것은 항상 작동하는지...(QT4.7+)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top