Zoom Line Example▲
Sélectionnez
/**
**************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt Charts module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:GPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 or (at your option) any later version
** approved by the KDE Free Qt Foundation. The licenses are as published by
** the Free Software Foundation and appearing in the file LICENSE.GPL3
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
***************************************************************************
*/
#include
"chart.h"
#include <QtWidgets/QGesture>
#include <QtWidgets/QGraphicsScene>
#include <QtWidgets/QGraphicsView>
Chart::
Chart(QGraphicsItem *
parent, Qt::
WindowFlags wFlags)
:
QChart(QChart::
ChartTypeCartesian, parent, wFlags)
{
// Seems that QGraphicsView (QChartView) does not grab gestures.
// They can only be grabbed here in the QGraphicsWidget (QChart).
grabGesture(Qt::
PanGesture);
grabGesture(Qt::
PinchGesture);
}
Chart::
~
Chart()
{
}
bool
Chart::
sceneEvent(QEvent *
event)
{
if
(event-&
gt;type() ==
QEvent::
Gesture)
return
gestureEvent(static_cast
&
lt;QGestureEvent *&
gt;(event));
return
QChart::
event(event);
}
bool
Chart::
gestureEvent(QGestureEvent *
event)
{
if
(QGesture *
gesture =
event-&
gt;gesture(Qt::
PanGesture)) {
QPanGesture *
pan =
static_cast
&
lt;QPanGesture *&
gt;(gesture);
QChart::
scroll(-
(pan-&
gt;delta().x()), pan-&
gt;delta().y());
}
if
(QGesture *
gesture =
event-&
gt;gesture(Qt::
PinchGesture)) {
QPinchGesture *
pinch =
static_cast
&
lt;QPinchGesture *&
gt;(gesture);
if
(pinch-&
gt;changeFlags() &
amp; QPinchGesture::
ScaleFactorChanged)
QChart::
zoom(pinch-&
gt;scaleFactor());
}
return
true
;
}