QT chart案例

examples-zoomlinechart.qdoc

Zoom Line Example | Qt Charts 5.15.2

Qt 5.15

Qt Charts

Zoom Line Example

Qt Charts | Commercial or GPLv3

Contents

Running the Example

Customizing Zooming Effects

Zoom Line Example

$zoomlinechart-brief The example shows how to create your own custom zooming effect. @@@zoomlinechart $$$zoomlinechart-description The example shows how to create your own custom zooming effect with QRubberBand by using a mouse and how to use touch gestures for paning and zooming. Running the Example To run the example from Qt Creator, open the Welcome mode and select the example from Examples. For more information, visit Building and Running an Example. Customizing Zooming Effects Let's first create a line series with some example data. **QLineSeries \*series = new QLineSeries(); for (int i = 0; i \< 500; i++) { QPointF p((qreal) i, qSin(M_PI / 50 \* i) \* 100); p.ry() += QRandomGenerator::global()-\>bounded(20); \*series \<\< p; }** Then we create a custom chart view by deriving from QChartView: class ChartView : public QChartView We override mouse and key event handling **protected: bool viewportEvent(QEvent \*event); void mousePressEvent(QMouseEvent \*event); void mouseMoveEvent(QMouseEvent \*event); void mouseReleaseEvent(QMouseEvent \*event); void keyPressEvent(QKeyEvent \*event);** Then we implement a custom logic for mouse and key events. For example pressing the '+' key will zoom in and pressing the '-' key will zoom out. **void ChartView::keyPressEvent(QKeyEvent \*event) { switch (event-\>key()) { case Qt::Key_Plus: chart()-\>zoomIn(); break; case Qt::Key_Minus: chart()-\>zoomOut(); break;** We also create our own QChart: **class Chart : public QChart** **Where we can handle the gestures: bool Chart::sceneEvent(QEvent \*event) { if (event-\>type() == QEvent::Gesture) return gestureEvent(static_cast\(event)); return QChart::event(event); }** **bool Chart::gestureEvent(QGestureEvent \*event) { if (QGesture \*gesture = event-\>gesture(Qt::PanGesture)) { QPanGesture \*pan = static_cast\(gesture); QChart::scroll(-(pan-\>delta().x()), pan-\>delta().y()); }** **if (QGesture \*gesture = event-\>gesture(Qt::PinchGesture)) { QPinchGesture \*pinch = static_cast\(gesture); if (pinch-\>changeFlags() \& QPinchGesture::ScaleFactorChanged) QChart::zoom(pinch-\>scaleFactor()); }** **return true; }** Note that you will need to call grabGesture() to both QMainWindow and QChart. Example project @ code.qt.io @@@zoomlinechart © 2020 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.

相关推荐
松涛和鸣23 分钟前
11.C 语言学习:递归、宏定义、预处理、汉诺塔、Fibonacci 等
linux·c语言·开发语言·学习·算法·排序算法
IT痴者1 小时前
《PerfettoSQL 的通用查询模板》---Android-trace
android·开发语言·python
2501_941111242 小时前
C++与自动驾驶系统
开发语言·c++·算法
2501_941111692 小时前
C++中的枚举类高级用法
开发语言·c++·算法
chilavert3182 小时前
技术演进中的开发沉思-191 JavaScript: 发展历程(上篇)
开发语言·javascript·ecmascript
l1t3 小时前
调用python函数的不同方法效率对比测试
开发语言·数据库·python·sql·duckdb
今天吃饺子3 小时前
如何用MATLAB调用python实现深度学习?
开发语言·人工智能·python·深度学习·matlab
2501_941111463 小时前
C++与硬件交互编程
开发语言·c++·算法
水木姚姚4 小时前
初识C++
开发语言·c++