Graphics_view_zoom

class Graphics_view_zoom : public QObject

This class adds ability to zoom QGraphicsView using mouse wheel.

It is used for zooming-in and zooming-out functionality.

The point under cursor remains motionless while it’s possible.

Note that it becomes not possible when the scene’s size is not large enough comparing to the viewport size. QGraphicsView centers the picture when it’s smaller than the view. And QGraphicsView’s scrolls boundaries don’t allow to put any picture point at any viewport position.

When the user starts scrolling, this class remembers original scene position and keeps it until scrolling is completed. It’s better than getting original scene position at each scrolling step because that approach leads to position errors due to before-mentioned positioning restrictions.

When zommed using scroll, this class emits zoomed() signal.

Usage:

new Graphics_view_zoom(view);

The object will be deleted automatically when the view is deleted.

You can set keyboard modifiers used for zooming using set_modified(). Zooming will be performed only on exact match of modifiers combination. The default modifier is Ctrl.

You can change zoom velocity by calling set_zoom_factor_base(). Zoom coefficient is calculated as zoom_factor_base^angle_delta (see QWheelEvent::angleDelta). The default zoom factor base is 1.0015.

This is controled from a slider in the bottom of main window ui.

Public Functions

Graphics_view_zoom(QGraphicsView *view, QGraphicsScene *scene, int maximumzoom)

Handles zooming the image.

Parameters:
  • view

  • scene

  • maximumzoom

void gentle_zoom(double factor)

This function calculates the current zoom level and previous zoom levels and restricts the zoom from 0 to max level only.

Parameters:

factor

void set_modifiers(Qt::KeyboardModifiers modifiers)

This function sets _modifiers to modifiers.

Parameters:

modifiers

void set_zoom_factor_base(double value)

This function sets _zoom_factor_base to value.

Parameters:

value

double getDefaultZoomInFactor()

This function returns the default value of zoom in factor.

Returns:

defaultZoomInFactor

double getDefaultZoomOutFactor()

This function returns the default value of zoom out factor.

Returns:

defaultZoomOutFactor

Private Functions

bool eventFilter(QObject *object, QEvent *event)

Waits for the zoom to occur This is an event filter which checks for 2 events, mouse click and mouse moves, it can scale the image by the amount of movement detected.

See also

keyboardModifiers

Parameters:
  • object

  • event

Returns:

true, false