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.

相关推荐
用户092 小时前
TipKit与CloudKit同步完全指南
ios·swift
侃侃_天下8 小时前
最终的信号类
开发语言·c++·算法
echoarts9 小时前
Rayon Rust中的数据并行库入门教程
开发语言·其他·算法·rust
Aomnitrix9 小时前
知识管理新范式——cpolar+Wiki.js打造企业级分布式知识库
开发语言·javascript·分布式
每天回答3个问题10 小时前
UE5C++编译遇到MSB3073
开发语言·c++·ue5
伍哥的传说10 小时前
Vite Plugin PWA – 零配置构建现代渐进式Web应用
开发语言·前端·javascript·web app·pwa·service worker·workbox
小莞尔10 小时前
【51单片机】【protues仿真】 基于51单片机八路抢答器系统
c语言·开发语言·单片机·嵌入式硬件·51单片机
我是菜鸟0713号11 小时前
Qt 中 OPC UA 通讯实战
开发语言·qt
JCBP_11 小时前
QT(4)
开发语言·汇编·c++·qt·算法
Brookty11 小时前
【JavaEE】线程安全-内存可见性、指令全排序
java·开发语言·后端·java-ee·线程安全·内存可见性·指令重排序