Thank you for you reply. Yes, this is what I have eventually done. It took me 4 steps:
Subclass QGraphicsView - override event(QEvent *) method, detect tablet events and send them to the scene
@
bool MyGraphicsView::event(QEvent *event)
{
switch (event->type()){
case QEvent::TabletPress:
case QEvent::TabletRelease:
case QEvent::TabletMove:
QApplication::sendEvent(scene(), event);
return true;
default:
return QGraphicsView::event(event);
}
}
@
Subclass QGraphicsScene, override event method, detect if the event is a tablet event
@
bool MyGraphicsScene::event(QEvent *event)
{
MyTabletEvent tabletEvent;
switch(event->type()){
case QEvent::TabletPress:
case QEvent::TabletRelease:
case QEvent::TabletMove:
if (static_cast<QTabletEvent>(event)){
tabletEvent = new MyTabletEvent(static_cast<QTabletEvent *>(event), someOtherArgs);
sendEvent(itemAt(tabletEvent->scenePos()), tabletEvent);
return true;
}
return false;
default:
return QGraphicsScene::event(event);
}
}
@
Subclass QGraphicsWidget, override event method, and detect mytabletevent
@
bool MyGraphicsWidget::event(QEvent *event)
{
switch(event->type()){
case QEvent::TabletPress:
case QEvent::TabletRelease:
case QEvent::TabletMove:
manageTabletEvent(static_cast<MyTabletEvent *>(event));
return true;
default:
return QGraphicsWidget::event(event);
}
}
@
Create a custom event (MyTabletEvent) inherited from QTabletEvent which should be passed between the classes above. It should provied similar API to QGraphicsSceneEvent
Actually this is where I am facing a new problem: how to map coordinates between view->scene->items.
From view->scene I guess mapToScene(viewPos) it's OK, but from scene->items I don't exactly know what to do. Maybe someone helps me figure it out.
Thanks