【QT6】【QChart】绘图时曲线显示不全

文章讲述了在使用QChart绘制QSplineSeries时遇到曲线不完整的问题,通过调整坐标轴范围解决,发现负数点影响了默认坐标系。作者探讨了可能的原因和解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在用QChart来绘制自动化曲线QSplineSeries时,总是发现曲线显示不全。显示如下:

在网上搜索一番,后发现有朋友建议加上QMargins,结果还是不行。

 代码如下:

    QSplineSeries *series = new QSplineSeries();
    series ->setVisible(true);
    *series << QPointF(0.0, 0.0) << QPointF(30, 130) <<  QPointF(255, 255);
 
    QChart *chart = new QChart();
    chart->addSeries(series);

    QMargins q;
    q.setBottom(3);
    chart->setMargins(q);

    chart->createDefaultAxes();
    // chart->axes(Qt::Horizontal).back()->setRange(-10, 255);

    QChartView *chartView = new QChartView(chart);
    chartView->resize(500, 500);
    chartView->show();

解释一下代码:

QSplineSeries是可以自动化绘制曲线的点序列,往里面添加了三个点(0,0)、(30,130)、(255,255)曲线是一个向上凸出的弧线。调用QChart的addSeries将序列加到QChart中,然后再基于QChart创建一个QChartView,就可以用show函数将曲线显示出来。

其中setMargins是给QChart添加三个边缘间隙,createDefaultAxes是创建默认的坐标轴,因为QSplineSeries是继承于QXYSeries,所以这里创建的是QValueAxis类型坐标轴。

代码解释完毕。

解释原因:

这里坐标轴默认是从0开始,到曲线的最大值255,将横坐标改为从-10开始:

chart->axes(Qt::Horizontal).back()->setRange(-10, 255);

于是曲线完整的显示出来了:

这里是QSplineSeries绘制曲线的时候,曲线的一些点有负数了,导致默认坐标系显示不出来。

有朋友会问如果不加默认坐标轴会不会正常呢,试了一下也不会:

 QSplineSeries是自动根据几个点绘制曲线,要研究下这些曲线的点是怎么计算出来的,是不是可以给一个范围限制不能包含负数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值