을 얻는 방법 QGraphicsScene 보고서는 항목을 이동하 이벤트
-
18-09-2019 - |
문제
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+)