【QT】qcustomplot的清除图层里表数据的方法,及错误分析

题记:ui.qcp->graph(0)->data().data()->clear();有用 ui.qcp->graph(0)->data()->clear();,无用,且软件不会报错

更详细地讨论 QCustomPlot 中的数据清除方法。

QCPGraph::data() 返回一个 QSharedPointer<QCPGraphDataContainer>,该容器提供了对图表数据的访问。实际上,data() 方法返回的是一个智能指针,智能指针的 data() 方法将返回其原始指针。因此,使用 data().data()->clear() 访问并清除底层数据。

#include <QApplication>
#include "qcustomplot.h"
#include "ui_mainwindow.h"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QMainWindow mainWindow;
    Ui::MainWindow ui;
    ui.setupUi(&mainWindow);

    // 创建QCustomPlot对象
    ui.qcp = new QCustomPlot(&mainWindow);

    // 添加一个图表
    ui.qcp->addGraph();

    // 为图表添加一些数据
    QVector<double> x(101), y(101);
    for (int i = 0; i < 101; ++i)
    {
        x[i] = i / 50.0 - 1;
        y[i] = x[i] * x[i];
    }
    ui.qcp->graph(0)->setData(x, y);

    // 显示图表
    ui.qcp->rescaleAxes();
    ui.qcp->replot();
    mainWindow.show();

    // 清除图表数据
    ui.qcp->graph(0)->data().data()->clear(); // 正确的方式来清除数据

    // 更新显示
    ui.qcp->replot();

    return app.exec();
}

在这里,ui->qcp->graph(0)->data().data()->clear(); 是正确的,因为 data() 返回一个 QSharedPointer<QCPGraphDataContainer>,而 data().data() 返回原始指针,从而允许调用 clear() 方法。

另一个博主的清除数据的方法记录

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值