diff options
| author | Ece Cinüçen <ece.cinucen@qt.io> | 2024-11-07 17:04:33 +0100 |
|---|---|---|
| committer | Ece Cinucen <ece.cinucen@qt.io> | 2024-11-11 16:59:19 +0000 |
| commit | 4bf9d2fd176374be3e4187cc720eed0e3dbf5f4d (patch) | |
| tree | b8bef457989e1b469956769b131b1eb8118ab7d6 /examples/charts/zoomlinechart/chartview.py | |
| parent | 435e739df302114517f1685a5146e4741454ad9d (diff) | |
Example: Add zoomlinechart
Adding missing example from c++
Task-number: PYSIDE-841
Pick-to: 6.8
Change-Id: I029d7c2c20affa2445e9558403bdaf114fa0f847
Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io>
Diffstat (limited to 'examples/charts/zoomlinechart/chartview.py')
| -rw-r--r-- | examples/charts/zoomlinechart/chartview.py | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/examples/charts/zoomlinechart/chartview.py b/examples/charts/zoomlinechart/chartview.py new file mode 100644 index 000000000..b4dcab944 --- /dev/null +++ b/examples/charts/zoomlinechart/chartview.py @@ -0,0 +1,70 @@ +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause +from PySide6.QtCharts import QChart, QChartView +from PySide6.QtGui import QKeyEvent, QMouseEvent +from PySide6.QtCore import QEvent, Qt +from PySide6.QtWidgets import QGraphicsView + + +class ChartView(QChartView): + def __init__(self, chart, parent=None): + super().__init__(chart, parent) + + self.setRubberBand(QChartView.RectangleRubberBand) + self._isTouching = False + + def viewPortEvent(self, event: QEvent): + + if event.type() == QMouseEvent.TouchBegin: + self._isTouching = True + + self.chart().setAnimationOptions(QChart.NoAnimation) + + return super().viewPortEvent(event) + + def mousePressEvent(self, event: QMouseEvent): + + if self._isTouching: + return + + return super().mousePressEvent(event) + + def mouseMoveEvent(self, event: QMouseEvent): + + if self._isTouching: + return + + return super().mouseMoveEvent(event) + + def mouseReleaseEvent(self, event: QMouseEvent): + + if self._isTouching: + self._isTouching = False + + self.chart().setAnimationOptions(QChart.SeriesAnimations) + + return super().mouseReleaseEvent(event) + + def keyPressEvent(self, event: QKeyEvent): + + key = event.key() + if key == Qt.Key_Plus: + self.chart().zoomIn() + + elif key == Qt.Key_Minus: + self.chart().zoomOut() + + elif key == Qt.Key_Left: + self.chart().scroll(-10, 0) + + elif key == Qt.Key_Right: + self.chart().scroll(10, 0) + + elif key == Qt.Key_Up: + self.chart().scroll(0, 10) + + elif key == Qt.Key_Down: + self.chart().scroll(0, -10) + + else: + QGraphicsView.keyPressEvent(event) |
