我想用一些QScatterDataArray填充QVector3D,它们本身是从数组中获取数据的。我知道如何手动执行,但我不知道如何自动执行。我猜您将不得不使用for循环,但是我不知道如何。我也想说我从未使用过QT,因此答案对您来说似乎显而易见。
这是我要修改的代码:
// "graph" is therefore my graph
QScatter3DSeries *series = new QScatter3DSeries(graph);
QScatterDataArray data;
data << QVector3D(50, 10, 0) << QVector3D(5, 8, 9) << QVector3D(0, 10, 15)
<< QVector3D(30, 50, 02) << QVector3D(15, 83, 7) << QVector3D(04, 20, 45)
<< QVector3D(40, 014, 10) << QVector3D(35, 28, 21) << QVector3D(04, 0, 15)
<< QVector3D(70, 10, 27) << QVector3D(15, 28, 47) << QVector3D(062, 70, 45)
<< QVector3D(50, 10, 0) << QVector3D(5, 8, 17) << QVector3D(031, 20, 35);
series->dataProxy()->addItems(data);
graph->addSeries(series);
谢谢 :)
最佳答案
QScatterDataArray
是QScatterDataItems
向量的typedef。QScatterDataItem
带有constructor的QVector3D
。
因此,迭代坐标表,为每个坐标构造一个QVector3D
,然后在push_back
上构造一个data
。
一种方法(不是唯一方法)是:
QScatterDataArray data;
for ( /* each xyz coordinate in some table */ )
{
data.push_back(QScatterDataItem(QVector3d(x, y, z)));
}