本文主要是介绍【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()
方法。
另一个博主的清除数据的方法记录
这篇关于【QT】qcustomplot的清除图层里表数据的方法,及错误分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!