【QT】QChart绘制曲线与散点图

功能描述:绘制曲线和散点图,添加图例信息,可以进行缩放、移动,鼠标在曲线上时显示当前坐标点

QChart功能类

  1. 继承QGraphicsView

  2. 重写鼠标事件函数

    protected:
        void resizeEvent(QResizeEvent *event);
        void mouseMoveEvent(QMouseEvent *event);
    
        void mousePressEvent(QMouseEvent *event);
    
        void mouseReleaseEvent(QMouseEvent *event);
        void wheelEvent(QWheelEvent *event);
    
  3. 设置QChart对像基本属性

    	QFont f;
        f.setFamily("Times New Roman");
        f.setBold(true);
        f.setPointSize(12);
    
        // 创建图表
        m_chart = new QChart();
        m_chart->legend()->hide();
        m_chart->setTheme(QChart::ChartThemeBlueIcy);
        m_chart->setDropShadowEnabled(true);
        m_chart->setAutoFillBackground(true);
        m_chart->createDefaultAxes();
        m_chart->setAnimationOptions(QChart::SeriesAnimations);
        m_chart->setMargins(QMargins(0, 0, 0, 0));
        m_chart->setTitle("曲线");
        m_chart->setTitleFont(f);
    
        m_chart->legend()->setVisible(true);
        m_chart->legend()->detachFromChart();
        m_chart->legend()->setBackgroundVisible(true);
        m_chart->legend()->setBrush(QBrush(QColor(128, 128, 128, 80)));
        m_chart->legend()->setPen(QPen(QColor(192, 192, 192, 192)));
        QFont font = m_chart->legend()->font();
        font.setPointSizeF(6);
        m_chart->legend()->setFont(font);
    
        mAxisX = new QValueAxis();
        mAxisY = new QValueAxis();
    
        QFont font_axis;
        font_axis.setFamily("Times New Roman");
        font_axis.setBold(true);
    
        mAxisX->setRange(0, 0.1);
        mAxisY->setRange(0, 40);
    
        mAxisX->setLinePenColor(Qt::black);
        mAxisY->setLinePenColor(Qt::black);
    
        mAxisX->setLabelFormat("%.1e");
        mAxisY->setLabelFormat("%.1e");
        //mAxisX->setGridLineVisible(false);
        //mAxisY->setGridLineVisible(false);
    
        mAxisX->setTitleText("X轴");
        mAxisY->setTitleText("Y轴");
        mAxisX->setTitleFont(font_axis);
        mAxisY->setTitleFont(font_axis);
    
        setDragMode(QGraphicsView::NoDrag);
        setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
        setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
        setRenderHint(QPainter::Antialiasing);
        setContentsMargins(QMargins(0, 0, 0, 0));
        scene()->addItem(m_chart);
    
        m_chart->addAxis(mAxisX, Qt::AlignBottom);
        m_chart->addAxis(mAxisY, Qt::AlignLeft);
        m_chart->setAcceptHoverEvents(true);
    
        // 设置图例字体大小
        QFont legendFont = m_chart->legend()->font();
        legendFont.setPointSize(8);
        legendFont.setBold(true);
        m_chart->
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

√沫影

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值