Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Q3DScatter-->;如何向点云添加具有不同颜色的点_C++_Qt - Fatal编程技术网

C++ Q3DScatter-->;如何向点云添加具有不同颜色的点

C++ Q3DScatter-->;如何向点云添加具有不同颜色的点,c++,qt,C++,Qt,我在Qt中编写了一个程序,它使用Q3DScatter可视化处理过的点云(3D点)。 现在,我想添加具有不同颜色的计算关键点。 可能吗? 有男孩有过这样的经历吗? 下面您可以看到代码的一部分,其中点云被添加到数据数组中 QScatterDataArray * dataArray = new QScatterDataArray; dataArray->resize(vector_seg_x->size()); QScatterDataItem * ptrToDataArray = &am

我在Qt中编写了一个程序,它使用Q3DScatter可视化处理过的点云(3D点)。 现在,我想添加具有不同颜色的计算关键点。 可能吗? 有男孩有过这样的经历吗? 下面您可以看到代码的一部分,其中点云被添加到数据数组中

QScatterDataArray * dataArray = new QScatterDataArray;
dataArray->resize(vector_seg_x->size());
QScatterDataItem * ptrToDataArray = &dataArray->first();

for(int i = 0; i < vector_seg_x->size();i++){

    ptrToDataArray->setPosition(QVector3D(
                                    (double)(iter_seg_x[i]),
                                    (double)(iter_seg_y[i]),
                                    (double)(iter_seg_z[i])));
    ptrToDataArray++;

}

m_graph_seg->seriesList().at(0)->dataProxy()->resetArray(dataArray);
QScatterDataArray*dataArray=新的QScatterDataArray;
dataArray->调整大小(vector_seg_x->size());
QScatterDataItem*ptrToDataArray=&dataArray->first();
对于(int i=0;isize();i++){
ptrToDataArray->setPosition(QVector3D(
(国际热核聚变实验堆[i]),
(双)(国际热核聚变实验堆[i]),
(国际热核聚变实验堆[i]);
ptrToDataArray++;
}
m_graph_seg->seriesList().at(0)->dataProxy()->resetArray(dataArray);

您只能为整个点列表设置颜色/渐变:

Q3DScatter scatter;
scatter.setFlags(scatter.flags() ^ Qt::FramelessWindowHint);

scatter.addSeries(new QScatter3DSeries);
scatter.addSeries(new QScatter3DSeries);

{
    QScatterDataArray *data = new QScatterDataArray;
    *data << QVector3D(0.5f, 0.5f, 0.5f) << QVector3D(-0.3f, -0.5f, -0.4f) << QVector3D(0.0f, -0.3f, 0.2f);

    scatter.seriesList().at(0)->dataProxy()->resetArray(data);

    QLinearGradient linearGrad(QPointF(100, 100), QPointF(200, 200));
    linearGrad.setColorAt(0, Qt::blue);
    linearGrad.setColorAt(1, Qt::red);

    scatter.seriesList().at(0)->setBaseGradient(linearGrad);
    scatter.seriesList().at(0)->setColorStyle(Q3DTheme::ColorStyle::ColorStyleObjectGradient);
}

{
    QScatterDataArray *data = new QScatterDataArray;
    *data << QVector3D(0.f, 0.f, 0.f);

    scatter.seriesList().at(1)->dataProxy()->resetArray(data);
    scatter.seriesList().at(1)->setBaseColor(Qt::green);
}

scatter.show();
q3d散射;
scatter.setFlags(scatter.flags()^Qt::FramelessWindowHint);
District.addSeries(新的QScatter3DSeries);
District.addSeries(新的QScatter3DSeries);
{
QScatterDataArray*数据=新的QScatterDataArray;
*数据梯度(线性梯度);
scatter.seriesList().at(0)->setColorStyle(Q3DTheme::ColorStyle::ColorStyleObjectGradient);
}
{
QScatterDataArray*数据=新的QScatterDataArray;
*data dataProxy()->resetArray(数据);
scatter.seriesList().at(1)->setBaseColor(Qt::green);
}
show();