aboutsummaryrefslogtreecommitdiffstats
path: root/examples/charts/zoomlinechart/chartview.py
diff options
context:
space:
mode:
authorEce Cinüçen <ece.cinucen@qt.io>2024-11-07 17:04:33 +0100
committerEce Cinucen <ece.cinucen@qt.io>2024-11-11 16:59:19 +0000
commit4bf9d2fd176374be3e4187cc720eed0e3dbf5f4d (patch)
treeb8bef457989e1b469956769b131b1eb8118ab7d6 /examples/charts/zoomlinechart/chartview.py
parent435e739df302114517f1685a5146e4741454ad9d (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.py70
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)