Всем доброго времени суток.
Прошу помочь с следующей проблемой:
имеется вид, на которую помещена сцена с размещенными на ней QGraphicsItem’ами. При помощи wheelEvent( QWheelEvent* ) перехватываю соответствующее событие мыши и масштабирую вид:
C++ (Qt)
void My_GraphicsView::wheelEvent( QWheelEvent* qevent )
{
if( qevent->buttons() != Qt::MidButton )
{
if( !(qevent->modifiers() & Qt::ControlModifier) )
{
if( qevent->delta() > 0 )
{
qreal factor = transform().scale( dCoeff, dCoeff ).mapRect(QRectF(0, 0, 1, 1)).width();
if( factor < 0.07 || factor > 100 ) return;
scale( dCoeff, dCoeff );
}
else
{
qreal factor = transform().scale( dCoeff, dCoeff ).mapRect(QRectF(0, 0, 1, 1)).width();
if( factor < 0.07 || factor > 100 ) return;
scale( dCoeff, dCoeff );
}
}
else
{
QAbstractScrollArea::wheelEvent( qevent );
}
}
Перед этим выставляю setTransformationAnchor( QGraphicsView::AnchorUnderMouse ) для того, чтобы область(центр) масштабирования находилась под указателем мыши.
Все вроде нормально работает, но до поры, до времени: при уменьшении масштаба сцена начинает выравниваться по центру вида становясь все меньше и меньше, не реагируя уже на то, где реально находится указатель мыши. Но мне необходимо, чтобы при уменьшении масштаба сцена находилась именно там, где находится курсор, а не поцентру окна\вида.
Может кто знает как с этим бороться?
Всем заранее спасибо!