QVector<QCPGraphData> data;double x = 0.1;double y = 0.2;data.append(QCPGraphData(x, y)); QCustomPlot *customPlot = new QCustomPlot();QCPGraph *graph = customPlot->addGraph();graph->setData(data); 中graph->setData(data);无效,如何避免QCPGraphDataContainer 的拷贝
时间: 2024-03-25 22:37:59 浏览: 48
QcustomPlot绘制动态点位,这些点位数据是随机数生成的
在调用 `setData` 函数时,`QVector<QCPGraphData>` 类型的数据会被拷贝到 `QCPGraphDataContainer` 中。如果数据量较大,这个过程可能会比较耗时。为了避免这种情况,可以使用 `QCPGraphDataContainer::set` 函数来直接设置 `QCPGraphDataContainer` 的数据,而不是通过 `setData` 函数来设置。
下面是一个示例代码:
```cpp
QVector<QCPGraphData> data;
double x = 0.1;
double y = 0.2;
data.append(QCPGraphData(x, y));
QCustomPlot *customPlot = new QCustomPlot();
QCPGraph *graph = customPlot->addGraph();
// 使用 set 函数设置 QCPGraphDataContainer 的数据,避免拷贝
graph->data()->set(data, true);
customPlot->replot();
```
在这个代码中,我们使用 `set` 函数将 `data` 直接设置到 `graph` 的数据容器中,第二个参数 `true` 表示数据会被复制到数据容器中,从而避免了 `setData` 函数中的数据拷贝操作。
阅读全文