C++图形开发平台Qt6示例:趋势图开发

该示例展示了如何创建您自己的自定义缩放效果。如何使用QRubberBand使用鼠标创建您自己的自定义缩放效果,以及如何使用触摸手势进行平移和缩放。

Qt组件推荐:

  • QtitanRibbon| 下载试用: 遵循Microsoft Ribbon UI Paradigm for Qt技术的Ribbon UI组件,致力于为Windows、Linux和Mac OS X提供功能完整的Ribbon组件。
  • QtitanChart | 下载试用 :是一个C ++库,代表一组控件,这些控件使您可以快速地为应用程序提供漂亮而丰富的图表。并且支持所有主要的桌面

该示例展示了如何创建您自己的自定义缩放效果。如何使用QRubberBand使用鼠标创建您自己的自定义缩放效果,以及如何使用触摸手势进行平移和缩放。

C++图形开发平台Qt6示例:趋势图开发

C++图形开发平台Qt6示例:趋势图开发

运行示例

要从Qt Creator运行示例,请打开欢迎模式并从示例中选择示例。有关更多信息,请访问构建和运行示例。

自定义缩放效果

让我们首先使用一些示例数据创建一个线系列。

 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;    }

然后我们通过从QChartView派生来创建自定义图表视图:

class ChartView : public QChartView

我们覆盖鼠标和按键事件处理

protected:    bool viewportEvent(QEvent *event);    void mousePressEvent(QMouseEvent *event);    void mouseMoveEvent(QMouseEvent *event);    void mouseReleaseEvent(QMouseEvent *event);    void keyPressEvent(QKeyEvent *event);

然后我们为鼠标和按键事件实现自定义逻辑。例如,按“+”键将放大,按“-”键将缩小。

void ChartView::keyPressEvent(QKeyEvent *event){    switch (event->key()) {    case Qt::Key_Plus:        chart()->zoomIn();        break;    case Qt::Key_Minus:        chart()->zoomOut();        break;

我们还创建了自己的QChart:

class Chart : public QChart

我们可以在哪里处理手势:

bool Chart::sceneEvent(QEvent *event){    if (event->type() == QEvent::Gesture)        return gestureEvent(static_cast<QGestureEvent *>(event));    return QChart::event(event);}bool Chart::gestureEvent(QGestureEvent *event){    if (QGesture *gesture = event->gesture(Qt::PanGesture)) {        QPanGesture *pan = static_cast<QPanGesture *>(gesture);        QChart::scroll(-(pan->delta().x()), pan->delta().y());    }    if (QGesture *gesture = event->gesture(Qt::PinchGesture)) {        QPinchGesture *pinch = static_cast<QPinchGesture *>(gesture);        if (pinch->changeFlags() & QPinchGesture::ScaleFactorChanged)            QChart::zoom(pinch->scaleFactor());    }    return true;}

请注意,您需要对QMainWindow和QChart调用grabGesture() 。

====================================================

想要了解或购买Qt正版授权的朋友,欢迎咨询官方客服

Qt技术交流群现已开通,QQ搜索群号“765444821”或者扫描下方二维码即可加入

C++图形开发平台Qt6示例:趋势图开发

C++图形开发平台Qt6示例:趋势图开发

 

标签:

来源:慧都

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年5月4日
下一篇 2021年5月4日

相关推荐

发表回复

登录后才能评论