blob: 2b83e57b30672d54b728474f9c426d6cf761400b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
# Copyright (C) 2024 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
from PySide6.QtWidgets import QGesture, QGestureEvent
from PySide6.QtCore import Qt, QEvent
from PySide6.QtCharts import QChart
class Chart(QChart):
def __init__(self,
ChartType=QChart.ChartType.ChartTypeCartesian,
QGraphicsItem=None,
WindowType=Qt.WindowFlags):
super().__init__()
self.grabGesture(Qt.PanGesture)
self.grabGesture(Qt.PinchGesture)
def sceneEvent(self, event: QEvent):
if event.type() == QEvent.Gesture:
return self.gestureEvent(event)
return super().sceneEvent(event)
def gestureEvent(self, event: QGestureEvent):
if gesture := event.gesture(Qt.PanGesture):
pan = gesture
self.scroll(-pan.delta().x(), pan.delta().y())
if gesture := event.gesture(Qt.PinchGesture):
pinch = gesture
if pinch.changeFlags() & QGesture.QPinchGesture.ScaleFactorChanged:
self.zoom(pinch.scaleFactor())
return True
|