QwtPlotZoomer(3)

✨ QwtPlotZoomer ✨

ok so this is from the Library Functions Manual bestie, and it's literally the QwtPlotZoomer(3) page β€” the zoom-stacking icon of the Qwt plot world πŸ‘‘


πŸ’– NAME πŸ’–

QwtPlotZoomer β€” gives you stacked zooming for a plot widget. That's the whole vibe. πŸŽ€


🌸 SYNOPSIS 🌸

#include <qwt_plot_zoomer.h>

Inherits QwtPlotPicker (so like, it's the picker's cooler younger sister πŸ’…).

🫢 Public Slots

  • void moveBy (double dx, double dy)
  • virtual void moveTo (const QPointF &)
  • virtual void zoom (const QRectF &) β€” zoom in, periodt πŸ”
  • virtual void zoom (int offset) β€” zoom in or out, your call bestie

🌈 Public Slots inherited from QwtPicker

  • void setEnabled (bool) β€” en/disable the picker (on/off switch energy ⚑)

πŸ¦‹ Signals

  • void zoomed (const QRectF &rect)

🌸 Signals inherited from QwtPlotPicker

  • void selected (const QPointF &pos)
  • void selected (const QRectF &rect)
  • void selected (const QVector< QPointF > &pa)
  • void appended (const QPointF &pos)
  • void moved (const QPointF &pos)

πŸŽ€ Signals inherited from QwtPicker

  • void activated (bool on)
  • void selected (const QPolygon &polygon)
  • void appended (const QPoint &pos)
  • void moved (const QPoint &pos)
  • void removed (const QPoint &pos)
  • void changed (const QPolygon &selection)

πŸ‘‘ Public Member Functions

  • QwtPlotZoomer (QWidget *, bool doReplot=true) β€” create a zoomer for a plot canvas ✨
  • QwtPlotZoomer (QwtAxisId xAxis, QwtAxisId yAxis, QWidget *, bool doReplot=true) β€” also creating a zoomer for a plot canvas, but you get to say which axes πŸ’…
  • virtual void setZoomBase (bool doReplot=true)
  • virtual void setZoomBase (const QRectF &) β€” set the initial size of the zoomer
  • QRectF zoomBase () const
  • QRectF zoomRect () const
  • virtual void setAxes (QwtAxisId xAxis, QwtAxisId yAxis) override
  • void setMaxStackDepth (int) β€” cap the number of recursive zoom operations at depth (no infinite zoom spiral bestie πŸŒ€)
  • int maxStackDepth () const
  • const QStack< QRectF > & zoomStack () const
  • void setZoomStack (const QStack< QRectF > &, int zoomRectIndex=-1) β€” assign a zoom stack
  • uint zoomRectIndex () const

🧚 Public Member Functions inherited from QwtPlotPicker

  • QwtPlotPicker (QWidget *canvas) β€” create a plot picker
  • virtual ~QwtPlotPicker () β€” destructor, bye bye πŸ‘‹
  • QwtPlotPicker (QwtAxisId xAxisId, QwtAxisId yAxisId, QWidget *)
  • QwtPlotPicker (QwtAxisId xAxisId, QwtAxisId yAxisId, RubberBand rubberBand, DisplayMode trackerMode, QWidget *)
  • QwtAxisId xAxis () const β€” return x axis
  • QwtAxisId yAxis () const β€” return y axis
  • QwtPlot * plot ()
  • const QwtPlot * plot () const
  • QWidget * canvas ()
  • const QWidget * canvas () const

πŸ’œ Public Member Functions inherited from QwtPicker

  • QwtPicker (QWidget *parent)
  • QwtPicker (RubberBand rubberBand, DisplayMode trackerMode, QWidget *)
  • virtual ~QwtPicker () β€” destructor
  • void setStateMachine (QwtPickerMachine *)
  • const QwtPickerMachine * stateMachine () const
  • QwtPickerMachine * stateMachine ()
  • void setRubberBand (RubberBand)
  • RubberBand rubberBand () const
  • void setTrackerMode (DisplayMode) β€” set the display mode of the tracker
  • DisplayMode trackerMode () const
  • void setResizeMode (ResizeMode) β€” set the resize mode
  • ResizeMode resizeMode () const
  • void setRubberBandPen (const QPen &)
  • QPen rubberBandPen () const
  • void setTrackerPen (const QPen &)
  • QPen trackerPen () const
  • void setTrackerFont (const QFont &)
  • QFont trackerFont () const
  • bool isEnabled () const
  • bool isActive () const
  • virtual bool eventFilter (QObject *, QEvent *) override β€” event filter
  • QWidget * parentWidget () β€” return the parent widget, where the selection happens
  • const QWidget * parentWidget () const β€” same thing but const, still the parent widget where the selection happens 🫢
  • virtual QPainterPath pickArea () const
  • virtual void drawRubberBand (QPainter *) const
  • virtual void drawTracker (QPainter *) const
  • virtual QRegion trackerMask () const
  • virtual QRegion rubberBandMask () const
  • QPoint trackerPosition () const
  • virtual QRect trackerRect (const QFont &) const
  • QPolygon selection () const

⭐ Public Member Functions inherited from QwtEventPattern

  • QwtEventPattern ()
  • virtual ~QwtEventPattern () β€” destructor
  • void initMousePattern (int numButtons)
  • void initKeyPattern ()
  • void setMousePattern (MousePatternCode, Qt::MouseButton button, Qt::KeyboardModifiers=Qt::NoModifier)
  • void setKeyPattern (KeyPatternCode, int key, Qt::KeyboardModifiers modifiers=Qt::NoModifier)
  • void setMousePattern (const QVector< MousePattern > &) β€” change the mouse event patterns
  • void setKeyPattern (const QVector< KeyPattern > &) β€” change the key event patterns
  • const QVector< MousePattern > & mousePattern () const
  • const QVector< KeyPattern > & keyPattern () const
  • QVector< MousePattern > & mousePattern ()
  • QVector< KeyPattern > & keyPattern ()
  • bool mouseMatch (MousePatternCode, const QMouseEvent *) const β€” compare a mouse event with an event pattern
  • bool keyMatch (KeyPatternCode, const QKeyEvent *) const β€” compare a key event with an event pattern

πŸ“ Protected Member Functions

  • virtual void rescale ()
  • virtual QSizeF minZoomSize () const β€” limit zooming by a minimum rectangle (so you can't zoom into a crumb bestie 🍞)
  • virtual void widgetMouseReleaseEvent (QMouseEvent *) override
  • virtual void widgetKeyPressEvent (QKeyEvent *) override
  • virtual void begin () override
  • virtual bool end (bool ok=true) override
  • virtual bool accept (QPolygon &) const override β€” check and correct a selected rectangle βœ…

🌈 Protected Member Functions inherited from QwtPlotPicker

  • QRectF scaleRect () const
  • QRectF invTransform (const QRect &) const
  • QRect transform (const QRectF &) const
  • QPointF invTransform (const QPoint &) const
  • QPoint transform (const QPointF &) const
  • virtual QwtText trackerText (const QPoint &) const override
  • virtual QwtText trackerTextF (const QPointF &) const β€” translate a position into a position string
  • virtual void move (const QPoint &) override
  • virtual void append (const QPoint &) override

🌸 Protected Member Functions inherited from QwtPicker

  • virtual QPolygon adjustedPoints (const QPolygon &) const β€” map the pickedPoints() into a selection()
  • virtual void transition (const QEvent *)
  • virtual void remove ()
  • virtual void reset ()
  • virtual void widgetMousePressEvent (QMouseEvent *)
  • virtual void widgetMouseDoubleClickEvent (QMouseEvent *)
  • virtual void widgetMouseMoveEvent (QMouseEvent *)
  • virtual void widgetWheelEvent (QWheelEvent *)
  • virtual void widgetKeyReleaseEvent (QKeyEvent *)
  • virtual void widgetEnterEvent (QEvent *)
  • virtual void widgetLeaveEvent (QEvent *)
  • virtual void stretchSelection (const QSize &oldSize, const QSize &newSize)
  • virtual void updateDisplay () β€” update the state of rubber band and tracker label
  • const QwtWidgetOverlay * rubberBandOverlay () const
  • const QwtWidgetOverlay * trackerOverlay () const
  • const QPolygon & pickedPoints () const
  • QRect trackerRect (const QSize &) const

πŸ¦‹ Protected Member Functions inherited from QwtEventPattern

  • virtual bool mouseMatch (const MousePattern &, const QMouseEvent *) const β€” compare a mouse event with an event pattern
  • virtual bool keyMatch (const KeyPattern &, const QKeyEvent *) const β€” compare a key event with an event pattern

πŸ’€ Additional Inherited Members πŸ’€

πŸŽ€ Public Types inherited from QwtPicker

  • enum RubberBand { NoRubberBand = 0, HLineRubberBand, VLineRubberBand, CrossRubberBand, RectRubberBand, EllipseRubberBand, PolygonRubberBand, UserRubberBand = 100 }
  • enum DisplayMode { AlwaysOff, AlwaysOn, ActiveOnly } β€” display mode
  • enum ResizeMode { Stretch, KeepSize }

πŸ”₯ Public Types inherited from QwtEventPattern

  • enum MousePatternCode { MouseSelect1, MouseSelect2, MouseSelect3, MouseSelect4, MouseSelect5, MouseSelect6, MousePatternCount } β€” symbolic mouse input codes
  • enum KeyPatternCode { KeySelect1, KeySelect2, KeyAbort, KeyLeft, KeyRight, KeyUp, KeyDown, KeyRedo, KeyUndo, KeyHome, KeyPatternCount } β€” symbolic keyboard input codes

πŸ’… DETAILED DESCRIPTION πŸ’…

QwtPlotZoomer provides stacked zooming for a plot widget. Obsessed. 🫢

So here's the tea: QwtPlotZoomer selects rectangles from user inputs (mouse or keyboard), translates them into plot coordinates, and adjusts the axes to them. The selection is supported by a rubber band and optionally by displaying the coordinates of the current mouse position. Iconic behaviour honestly. ✨

Zooming can be repeated as often as possible, limited only by maxStackDepth() or minZoomSize(). Each rectangle is pushed on a stack. Stacked like your iced coffee orders, bestie 🧊

The default setting for how to select rectangles is a QwtPickerDragRectMachine with the following bindings:

  • QwtEventPattern::MouseSelect1
    • The first point of the zoom rectangle is selected by a mouse press, the second point from the position, where the mouse is released. πŸ–±οΈ
  • QwtEventPattern::KeySelect1
    • The first key press selects the first, the second key press selects the second point. ⌨️
  • QwtEventPattern::KeyAbort
    • Discard the selection in the state, where the first point is selected.

To traverse the zoom stack the following bindings are used:

  • QwtEventPattern::MouseSelect3, QwtEventPattern::KeyUndo
    • Zoom out one position on the zoom stack
  • QwtEventPattern::MouseSelect6, QwtEventPattern::KeyRedo
    • Zoom in one position on the zoom stack
  • QwtEventPattern::MouseSelect2, QwtEventPattern::KeyHome
    • Zoom to the zoom base 🏠

The setKeyPattern() and setMousePattern() functions can be used to configure the zoomer actions. The following example shows how to configure the 'I' and 'O' keys for zooming in and out one position on the zoom stack. The "Home" key is used to "unzoom" the plot. No cap, this is the good stuff πŸ‘‡

zoomer = new QwtPlotZoomer( plot );
zoomer->setKeyPattern( QwtEventPattern::KeyRedo, Qt::Key_I, Qt::ShiftModifier );
zoomer->setKeyPattern( QwtEventPattern::KeyUndo, Qt::Key_O, Qt::ShiftModifier );
zoomer->setKeyPattern( QwtEventPattern::KeyHome, Qt::Key_Home );

QwtPlotZoomer is tailored for plots with one x and y axis, but it is allowed to attach a second QwtPlotZoomer (without rubber band and tracker) for the other axes. Two zoomers, one plot, main character energy πŸ‘‘

Note β€” the realtime example includes a derived zoomer class that adds scrollbars to the plot canvas. πŸ™ˆ

See also QwtPlotPanner, QwtPlotMagnifier β€” the whole squad honestly 🧚

Definition at line 79 of file qwt_plot_zoomer.h. πŸŽ€

πŸ‘‘ Constructor & Destructor Documentation πŸ‘‘

πŸŽ€ QwtPlotZoomer::QwtPlotZoomer (QWidget * canvas, bool doReplot = true) [explicit]

Okay so this one builds you a zoomer for a plot canvas, periodt. And listen β€” the zoomer gets set to those x- and y-axis of the parent plot of the canvas that are enabled. If both or no x-axis are enabled, the picker is set to QwtAxis::XBottom. If both or no y-axis are enabled, it's set to QwtAxis::YLeft. iykyk πŸ’…

It comes pre-loaded with a QwtPickerDragRectMachine, the tracker mode is set to QwtPicker::ActiveOnly, and the rubber band is set to QwtPicker::RectRubberBand. Iconic defaults, honestly.

Parameters

  • canvas β€” plot canvas to observe, also the parent object
  • doReplot β€” call QwtPlot::replot() for the attached plot before initializing the zoomer with its scales. This might be necessary when the plot is in a state with pending scale changes.

See also: QwtPlot::autoReplot(), QwtPlot::replot(), setZoomBase()

Definition at line 109 of file qwt_plot_zoomer.cpp.


🌸 QwtPlotZoomer::QwtPlotZoomer (QwtAxisId xAxisId, QwtAxisId yAxisId, QWidget * canvas, bool doReplot = true) [explicit]

Same vibe, but now you pick the axes bestie. Create a zoomer for a plot canvas β€” initialized with a QwtPickerDragRectMachine, tracker mode QwtPicker::ActiveOnly, rubber band QwtPicker::RectRubberBand. Chef's kiss 🧚

Parameters

  • xAxisId β€” X axis of the zoomer
  • yAxisId β€” Y axis of the zoomer
  • canvas β€” plot canvas to observe, also the parent object
  • doReplot β€” call QwtPlot::replot() for the attached plot before initializing the zoomer with its scales. This might be necessary when the plot is in a state with pending scale changes.

See also: QwtPlot::autoReplot(), QwtPlot::replot(), setZoomBase()

Definition at line 133 of file qwt_plot_zoomer.cpp.


πŸ’€ QwtPlotZoomer::~QwtPlotZoomer () [virtual]

The destructor. She's leaving the group chat 🫢 (no description given for this one, so that's literally it)

Definition at line 158 of file qwt_plot_zoomer.cpp.


✨ Member Function Documentation ✨

πŸŽ€ bool QwtPlotZoomer::accept (QPolygon & pa) const [override] [protected] [virtual]

Check and correct a selected rectangle. Rectangles with a height or width < 2 get rejected β€” nope, not valid β€” otherwise the selected rectangle gets expanded to a minimum size of 11x11 and accepted. So tiny selections get glow-upped into something usable πŸ’…

Returns: true if the rectangle is accepted, or has been changed to an accepted one.

Reimplemented from QwtPicker.

Definition at line 567 of file qwt_plot_zoomer.cpp.


πŸ¦‹ void QwtPlotZoomer::begin () [override] [protected] [virtual]

Rejects selections when the stack depth is too deep, or when the zoomed rectangle is minZoomSize(). Like, we're full, no more zooming, sorry babe 😭

See also: minZoomSize(), maxStackDepth()

Reimplemented from QwtPicker.

Definition at line 609 of file qwt_plot_zoomer.cpp.


🌈 bool QwtPlotZoomer::end (bool ok = true) [override] [protected] [virtual]

Expand the selected rectangle to minZoomSize() and zoom in if it's accepted. This is the moment fr fr ✨

Parameters

  • ok β€” if true, complete the selection and emit selected signals; otherwise discard the selection.

See also: accept(), minZoomSize()

Returns: true if the selection has been accepted, false otherwise.

Reimplemented from QwtPlotPicker.

Definition at line 643 of file qwt_plot_zoomer.cpp.


πŸ“ int QwtPlotZoomer::maxStackDepth () const

Returns: maximal depth of the zoom stack.

See also: setMaxStackDepth()

Definition at line 201 of file qwt_plot_zoomer.cpp.


🧚 QSizeF QwtPlotZoomer::minZoomSize () const [protected] [virtual]

Limit zooming by a minimum rectangle β€” keeps you from zooming into literal dust πŸ’€

Returns: zoomBase().width() / 10e4, zoomBase().height() / 10e4

Definition at line 597 of file qwt_plot_zoomer.cpp.


🌸 void QwtPlotZoomer::moveBy (double dx, double dy) [slot]

Move the current zoom rectangle.

Parameters

  • dx β€” X offset
  • dy β€” Y offset
Note: the changed rectangle is limited by the zoom base.

Definition at line 520 of file qwt_plot_zoomer.cpp.


πŸŽ€ void QwtPlotZoomer::moveTo (const QPointF & pos) [virtual] [slot]

Move the the current zoom rectangle. (Yes, "the the" β€” we don't gatekeep typos, we celebrate them 🫢)

Parameters

  • pos β€” new position

See also: QRectF::moveTo()

Note: the changed rectangle is limited by the zoom base.

Definition at line 534 of file qwt_plot_zoomer.cpp.


πŸ’œ void QwtPlotZoomer::rescale () [protected] [virtual]

Adjust the observed plot to zoomRect() β€” syncing the vibe check between what's selected and what's shown ✨

Note: initiates QwtPlot::replot()

Definition at line 416 of file qwt_plot_zoomer.cpp.


πŸ¦‹ void QwtPlotZoomer::setAxes (QwtAxisId xAxisId, QwtAxisId yAxisId) [override] [virtual]

Reinitialize the axes, and set the zoom base to their scales. Fresh start, main character energy πŸ‘‘

Parameters

  • xAxisId β€” X axis
  • yAxisId β€” Y axis

Reimplemented from QwtPlotPicker.

Definition at line 455 of file qwt_plot_zoomer.cpp.


πŸ”₯ void QwtPlotZoomer::setMaxStackDepth (int depth)

Limit the number of recursive zoom operations to depth. A value of -1 sets the depth to unlimited, 0 disables zooming entirely. If the current zoom rectangle is below depth, the plot is unzoomed. So -1 = endless slay, 0 = touch grass πŸ“

Parameters

  • depth β€” maximum for the stack depth

See also: maxStackDepth()

Note: depth doesn't include the zoom base, so zoomStack().count() might be maxStackDepth() + 1. Sneaky, I know 😭

Definition at line 174 of file qwt_plot_zoomer.cpp.


🌈 void QwtPlotZoomer::setZoomBase (bool doReplot = true) [virtual]

Reinitialized the zoom stack with scaleRect() as base. Reset era πŸ’…

Parameters

  • doReplot β€” call QwtPlot::replot() for the attached plot before initializing the zoomer with its scales. This might be necessary when the plot is in a state with pending scale changes.

See also: zoomBase(), scaleRect() QwtPlot::autoReplot(), QwtPlot::replot().

Definition at line 235 of file qwt_plot_zoomer.cpp.


πŸŽ€ void QwtPlotZoomer::setZoomBase (const QRectF & base) [virtual]

Set the initial size of the zoomer. base is united with the current scaleRect() and the zoom stack is reinitialized with it as zoom base. The plot is zoomed to scaleRect(). Union of two vibes, one zoom base 🫢

Parameters

  • base β€” zoom base

See also: zoomBase(), scaleRect()

Definition at line 261 of file qwt_plot_zoomer.cpp.


⭐ void QwtPlotZoomer::setZoomStack (const QStack< QRectF > & zoomStack, int zoomRectIndex = -1)

Assign a zoom stack. In combination with other types of navigation it might be useful to modify to manipulate the complete zoom stack. Like redecorating the whole stack bestie πŸŽ€

Parameters

  • zoomStack β€” new zoom stack
  • zoomRectIndex β€” index of the current position of zoomStack. In case of -1 the current position is at the top of the stack.
Note: the zoomed signal might be emitted.

See also: zoomStack(), zoomRectIndex()

Definition at line 383 of file qwt_plot_zoomer.cpp.


🌸 void QwtPlotZoomer::widgetKeyPressEvent (QKeyEvent * ke) [override] [protected] [virtual]

Keys doing keys things, no cap:

  • Qt::Key_Plus β€” zooms in
  • Qt::Key_Minus β€” zooms out one position on the zoom stack
  • Qt::Key_Escape β€” zooms out to the zoom base

Changes the current position on the stack, but doesn't pop any rectangle. Nothing leaves the stack, she just moves πŸ’…

Note: the keys codes can be changed, using QwtEventPattern::setKeyPattern: 3, 4, 5

Reimplemented from QwtPicker.

Definition at line 497 of file qwt_plot_zoomer.cpp.


πŸ–±οΈ void QwtPlotZoomer::widgetMouseReleaseEvent (QMouseEvent * me) [override] [protected] [virtual]

Clicks that matter:

  • Qt::MidButton β€” zooms out one position on the zoom stack
  • Qt::RightButton β€” zooms out to the zoom base

Changes the current position on the stack, but doesn't pop any rectangle.

Note: the mouse events can be changed, using QwtEventPattern::setMousePattern: 2, 1

Reimplemented from QwtPicker.

Definition at line 474 of file qwt_plot_zoomer.cpp.


πŸ”₯ void QwtPlotZoomer::zoom (const QRectF & rect) [virtual] [slot]

Zoom in. Clears all rectangles above the current position of the zoom stack and pushes the normalized rectangle on it. Out with the old, in with the new πŸ“βœ¨

Note: if the maximal stack depth is reached, zoom is ignored. Also: the zoomed signal is emitted.

Definition at line 310 of file qwt_plot_zoomer.cpp.


πŸ¦‹ void QwtPlotZoomer::zoom (int offset) [virtual] [slot]

Zoom in or out. Activate a rectangle on the zoom stack with an offset relative to the current position. Negative values of offset will zoom out, positive zoom in. A value of 0 zooms out to the zoom base. Literally the "take me back" button 🫢

Parameters

  • offset β€” offset relative to the current position of the zoom stack.
Note: the zoomed signal is emitted.

See also: zoomRectIndex()

Definition at line 347 of file qwt_plot_zoomer.cpp.


πŸŽ€ QRectF QwtPlotZoomer::zoomBase () const

Returns: initial rectangle of the zoomer β€” the og rectangle, iconic πŸ‘‘

See also: setZoomBase(), zoomRect()

Definition at line 221 of file qwt_plot_zoomer.cpp.


⭐ void QwtPlotZoomer::zoomed (const QRectF & rect) [signal]

A signal emitting the zoomRect(), when the plot has been zoomed in or out. She's telling everyone in the chat what just happened πŸ“£

Parameters

  • rect β€” current zoom rectangle.

πŸ’œ QRectF QwtPlotZoomer::zoomRect () const

Returns: rectangle at the current position on the zoom stack.

See also: zoomRectIndex(), scaleRect().

Definition at line 287 of file qwt_plot_zoomer.cpp.


🌈 uint QwtPlotZoomer::zoomRectIndex () const

Returns: index of current position of zoom stack. Just a number but she's important πŸ’…

Definition at line 295 of file qwt_plot_zoomer.cpp.


πŸ“ const QStack< QRectF > & QwtPlotZoomer::zoomStack () const

Returns: the zoom stack. zoomStack()[0] is the zoom base, zoomStack()[1] the first zoomed rectangle. Index 0 is the mom of the group chat, periodt.

See also: setZoomStack(), zoomRectIndex()

Definition at line 212 of file qwt_plot_zoomer.cpp.


🫢 Author 🫢

Generated automatically by Doxygen for Qwt User's Guide from the source code. No human wrote this one β€” the robot did it, and honestly? She ate πŸ€–βœ¨


And that's the whole page, bestie! Big kiss from the Qwt User's Guide (that's the source + version vibe πŸŽ€), dated whenever this manual page got its little moment in the sun, and filed neatly under QwtPlotZoomer(3) πŸ¦‹πŸ’– Go forth and zoom responsibly πŸ’…

πŸ“¦ where this page comes from