01 SbBool eventHandler(void *data, QEvent *anEvent) 02 { 03 // Pointer to rendering area 04 SoQtRenderArea *renderArea = (SoQtRenderArea *) data; 05 QMouseEvent *MouseEvent; 06 SbVec3f vector; 07 SbBool handled = TRUE; 08 09 // What event has happened? 10 switch(anEvent->type()) { 11 case QEvent::MouseButtonPress: 12 // Mouse key pressed 13 MouseEvent = (QMouseEvent *) anEvent; 14 15 if(MouseEvent->button() == Qt::LeftButton) { 16 // Left mouse key: new dot 17 Projection(renderArea,MouseEvent->x(), 18 MouseEvent->y(), vector); 19 newDot(renderArea, vector); 20 } 21 else if(MouseEvent->button() == Qt::MidButton) { 22 // Center mouse key: rotate camera 23 ticker->schedule(); 24 } 25 else if(MouseEvent->button() == Qt::RightButton) { 26 // right mouse key: delete all dots 27 deleteDots(renderArea); 28 } 29 break; 30 case QEvent::MouseButtonRelease: 31 // Mouse button is released 32 MouseEvent = (QMouseEvent *) anEvent; 33 if(MouseEvent->button() == Qt::MidButton) { 34 // Center mouse key: camera stable 35 ticker->unschedule(); 36 } 37 break; 38 case QEvent::MouseMove: 39 // The Mouse is moved 40 MouseEvent = (QMouseEvent *) anEvent; 41 if(MouseEvent->state()) { 42 // Key pressed 43 Projection(renderArea,MouseEvent->x(), 44 MouseEvent->y(), vector); 45 newDot(renderArea, vector); 46 } 47 break; 48 } 49 return handled; 50 }