QT5 QCustomPlot实现动态曲线绘制,可以左键放大、右键拖拽、跟随鼠标显示坐标

这篇具有很好参考价值的文章主要介绍了QT5 QCustomPlot实现动态曲线绘制,可以左键放大、右键拖拽、跟随鼠标显示坐标。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

QT5 QCustomPlot实现动态曲线绘制

1.准备

  1. 下载文件,官网:https://www.qcustomplot.com/
  2. 按照官网教程,qt添加帮助文件。
  3. git或github下载:XCustomPlot
  4. 打开项目,将1下载的文件解压,添加qcustomplot.cpp/p。
  5. 在pro文件中添加QT += widgets printsupport、添加CONFIG += c++11.
  6. 引入头文件 #include “qcustomplot.h”
  7. 在ui中添加Widgeet,提升为QCustomPlot;
  8. 编译。

2.鼠标矩形框进行框选放大、右键平移

可参考:https://blog.csdn.net/qq_31073871/article/details/90108646

1.在QCustomPlot类中添加private变量:

private:
  QRubberBand *rb;
  QPoint startPos;
  bool cancelRb;
  1. 直接在h文件中,QCustomPlot类中添加ESC按键处理函数
virtual void QCustomPlot::keyPressEvent(QKeyEvent *e)
{
    if(e->key() == Qt::Key_Escape) {
        cancelRb = true; //记录标志位,以便释放鼠标后不执行缩放代码
        rb->hide();//隐藏选择框
    }
}
  1. 在QCustomPlot的3个鼠标事件函数添加代码

0、在构造函数QCustomPlot::QCustomPlot(QWidget *parent)的初始化列表中添加:
  ,rb(new QRubberBand(QRubberBand::Rectangle, this))
  ,startPos(0, 0)
1、左键按下时,记录坐标起点
    在QCustomPlot::mousePressEvent(QMouseEvent *event)中添加:
    if(event->buttons() & Qt::LeftButton)
    {
        startPos = event->pos();
        cancelRb = false;
        rb->resize(0, 0);
        rb->show();
    }
 
2、左键按下并移动时,绘制矩形框
    在void QCustomPlot::mouseMoveEvent(QMouseEvent *event)中添加:
 
    if(event->buttons() & Qt::LeftButton)
    {
        QRect normalRect = QRect(startPos, event->pos()).normalized();//任意两点定义矩形
        rb->setGeometry(normalRect);
    }
3、左键弹起时,记录终点坐标,并把曲线放大到【起点、终点】围成的矩形框中
    在void QCustomPlot::mouseReleaseEvent(QMouseEvent *event)中添加:
 
    if(event->button() == Qt::LeftButton)
    {
        rb->hide();
        if(!cancelRb)
        {
            QRect normalRect = QRect(startPos, event->pos()).normalized();
            rb->setGeometry(normalRect);
            this->xAxis->setRange(xAxis->pixelToCoord(normalRect.left()),
                                  xAxis->pixelToCoord(normalRect.right()));
 
            this->yAxis->setRange(yAxis->pixelToCoord(normalRect.bottom()),
                                  yAxis->pixelToCoord(normalRect.top()));
            this->replot();//立即刷新图像
        }
    }
  1. 在void QCPAxisRect::mousePressEvent(QMouseEvent *event, const QVariant &details),内部改为右键
  if ((event->buttons() & Qt::RightButton) || (event->buttons() & Qt::MiddleButton))

3.最终效果

演示文章来源地址https://www.toymoban.com/news/detail-499922.html

到了这里,关于QT5 QCustomPlot实现动态曲线绘制,可以左键放大、右键拖拽、跟随鼠标显示坐标的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • QCustomPlot实现曲线拖拽

    曲线图应该同时具有以下功能点: 1、在画布上进行鼠标框选,实现坐标缩放。 2、可以上下拖动某曲线。 这里选择QCustomPlot,是一个C++绘图库,可以创建各种类型的绘图,包括散点图、曲线图、直方图、颜色地图、轮廓图等,可以跨平台使用。 以下是QCustomPlot的官方文档:

    2024年02月07日
    浏览(23)
  • qt使用QCustomplot绘制cpu和内存使用率图

                QCustomPlot是一个开源的Qt C++图表库,用于可视化数据。该库提供了多种类型的可定制的图表,包括散点图、线图、柱状图和等高线图等。它还支持自定义绘制,可以创建任意形状和大小的元素,并使其与其他元素交互。QCustomPlot易于集成到现有的Qt应用程序中

    2024年02月09日
    浏览(37)
  • Qt实用技巧:QCustomPlot做北斗GPS显示绝对位置运动轨迹和相对位置运动轨迹图的时,使图按照输入点顺序连曲线

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/136131310 红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…   使用QCustomPlot绘制多个目标的

    2024年02月20日
    浏览(40)
  • 【Python_PyQtGraph 学习笔记(二)】基于PySide2和GraphicsLayoutWidget实现动态绘制数据曲线

    PyQtGraph的例程里基本都是一次性的获取数据并将其绘制为图形,然而在实际开发中大多需要对实时的数据进行图形化展示,这时候就需要对数据进行实时的更新和绘制。 在最近的项目中选用了 Pyside2来写GUI界面,PyQtGraph.GraphicsLayoutWidget来进行图形的绘制,下面简单介绍如何实

    2024年02月02日
    浏览(31)
  • 【MATLAB】动态绘制曲线图(二维曲线)

    先看效果 ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ 主程序: 加载数据的部分我省略了,就是data1这个矩阵 动态绘图函数: 这里暂时只支持设置线性、颜色、markerstyle这三个参数吧,主要是用 line() 这个函数把点连起来,设置line的参数就是曲线的样式,查看帮助文档 doc line 可以自定

    2024年02月16日
    浏览(32)
  • Matlab 曲线动态绘制

    示例: 如果需要更好的显示可以提前设置好xlim/ylim(注释掉的地方是Matlab GIF生成代码)

    2024年02月04日
    浏览(35)
  • Qt绘制曲线图(基于qt画图QPainter)

    在没有QCharst模块时,可以使用QPainter自定义绘制曲线折线图 下面提供完整代码供参考: 直接在qt创建一个QMainWindow类的app的工程,不自动生成ui文件,然后把下面代码复制到mainwindow.cpp编译运行即可。 mainwindow.cpp: //博客:booinon //https://blog.csdn.net/boonion?spm=1011.2415.3001.5343

    2024年02月11日
    浏览(36)
  • wxPython使用matplotlib绘制动态曲线

    我们创建了一个继承自 wx.Frame 的自定义窗口类 MyFrame 。在 MyFrame 的构造函数中,我们创建了一个 matplotlib 的 Figure 对象和一个 FigureCanvas 对象,用于在窗口中显示绘图结果。然后,我们使用 numpy 生成了一个包含100个点的x轴坐标数组 self.x 和对应的正弦值数组。接下来,我们使

    2024年02月12日
    浏览(29)
  • Qt Charts - 绘制简单曲线图(1)

    QSplineSeries 类是Qt图表模块中的一个曲线系列类,用于绘制平滑的二次和三次曲线。这个系列通过在给定的数据点之间插值来绘制曲线,从而使得曲线更加平滑。 使用QSplineSeries时,需要将数据点作为QPointF类型的列表传递给数据集。然后将数据集添加到QChart中。可以使用QSpli

    2024年02月04日
    浏览(47)
  • 《Qt开发》基于QWT的曲线图绘制

    Qwt绘制曲线图 该示例包含以下功能: 1.使用qwt绘制曲线图 2.通过鼠标实现绘图的缩放,只缩放x轴或只缩放y轴或同时缩放 3.设置绘图区域和绘图区域外的背景颜色 4.通过点击图例实现曲线的显示和隐藏 QwtPlot绘图部件 头文件 #include qwt_plot.h 枚举类型 enum Axis { yLeft , yRight , xBott

    2023年04月08日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包