首页 > 解决方案 > PySide2 Qt 表面示例

问题描述

我想在 PySide2 中重新实现 Qt C++“ Surface ”示例(Q3DSurface),但QSurfaceDataArray不可QSurfaceDataRow用。

void SurfaceGraph::fillSqrtSinProxy()
{
    float stepX = (sampleMax - sampleMin) / float(sampleCountX - 1);
    float stepZ = (sampleMax - sampleMin) / float(sampleCountZ - 1);

    QSurfaceDataArray *dataArray = new QSurfaceDataArray;
    dataArray->reserve(sampleCountZ);
    for (int i = 0 ; i < sampleCountZ ; i++) {
        QSurfaceDataRow *newRow = new QSurfaceDataRow(sampleCountX);
        // Keep values within range bounds, since just adding step can cause minor drift due
        // to the rounding errors.
        float z = qMin(sampleMax, (i * stepZ + sampleMin));
        int index = 0;
        for (int j = 0; j < sampleCountX; j++) {
            float x = qMin(sampleMax, (j * stepX + sampleMin));
            float R = qSqrt(z * z + x * x) + 0.01f;
            float y = (qSin(R) / R + 0.24f) * 1.61f;
            (*newRow)[index++].setPosition(QVector3D(x, y, z));
        }
        *dataArray << newRow;
    }

    m_sqrtSinProxy->resetArray(dataArray);
}

有没有办法QVector<QSurfaceDataItem>在 PySide2 中使用 a ?

from PySide2.QtDataVisualization import QtDataVisualization as QDV

data_item = QDV.QSurfaceDataItem()
data_item.setPosition(QVector3D(x, y, z))

可用,QSurfaceDataItem但我不能将对象传递给QSurfaceDataProxy没有QVector.

标签: pythonc++pyside2

解决方案


推荐阅读