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.

相关推荐
Scoful39 分钟前
快速用 uv 模拟发布一个 Python 依赖包到 TestPyPI 上,以及常用命令
开发语言·python·uv
clock的时钟1 小时前
c++第七天--继承与派生
开发语言·c++
蓝桉~MLGT2 小时前
java高级——高阶函数、如何定义一个函数式接口类似stream流的filter
java·开发语言·python
点云SLAM2 小时前
C++中string流知识详解和示例
开发语言·c++·istringstream·ostringstream·c++学习·stringstream·数据流操作
门前云梦10 小时前
《C语言·源初法典》---C语言基础(上)
c语言·开发语言·学习
sjtu_cjs10 小时前
Tensorrt python api 10.11.0笔记
开发语言·笔记·python
0x7CF10 小时前
QT3D学习笔记——圆台、圆锥
qt·学习·3d
哆啦A梦的口袋呀10 小时前
深入理解系统:UML类图
开发语言·python·uml
虎冯河11 小时前
怎么让Comfyui导出的图像不包含工作流信息,
开发语言·python
coding随想11 小时前
JavaScript中的原始值包装类型:让基本类型也能“变身”对象
开发语言·javascript·ecmascript