PySide6.QtGraphsWidgets.Q3DSurfaceWidgetItem

class Q3DSurfaceWidgetItem

Q3DSurfaceWidgetItem 类提供了用于渲染3D表面图的方法。更多

PySide6.QtGraphsWidgets.Q3DSurfaceWidgetItem 的继承图

概要

属性

方法

信号

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

该类使开发人员能够渲染3D表面图,并通过自由旋转场景来查看它们。表面的视觉属性,如绘制模式和阴影,可以通过QSurface3DSeries进行控制。

Q3DSurfaceWidgetItem 支持通过显示一个高亮球来选择数据点,用户可以通过左键点击(当使用默认输入处理程序时)或通过 QSurface3DSeries 选择。选择指针附带一个标签,默认情况下显示数据点的值和点的坐标。

轴上的取值范围和标签格式可以通过QValue3DAxis进行控制。

要旋转图形,请按住鼠标右键并移动鼠标。缩放是通过鼠标滚轮完成的。这两个操作都假设使用的是默认的输入处理程序。

如果没有为Q3DSurfaceWidgetItem显式设置轴,则会创建没有标签的临时默认轴。这些默认轴可以通过轴访问器进行修改,但一旦为方向显式设置了任何轴,该方向的默认轴将被销毁。

如何构建一个最小的Q3DSurfaceWidgetItem图表

首先,构造 Q3DSurfaceWidgetItem。由于我们在这个示例中将图表作为顶级窗口运行,我们需要清除默认设置的 Qt::FramelessWindowHint 标志:

quickWidget = QQuickWidget()
surface = Q3DSurfaceWidgetItem()
surface.setWidget(quickWidget)
surface.widget().setMinimumSize(QSize(256, 256))

现在 Q3DSurfaceWidgetItem 已准备好接收要渲染的数据。创建数据元素以接收值:

注意

在新的代理-系列关系中,数据保存在系列中。因此,为了使代理能够添加、删除或编辑数据,首先创建系列是一个先决条件。

data = QSurfaceDataArray()
dataRow1 = QSurfaceDataRow()
dataRow2 = QSurfaceDataRow()

首先将数据提供给行元素,然后将它们的指针添加到数据元素中:

dataRow1 << QSurfaceDataItem(0.0f, 0.1f, 0.5f) << QSurfaceDataItem(1.0f, 0.5f, 0.5f)
dataRow2 << QSurfaceDataItem(0.0f, 1.8f, 1.0f) << QSurfaceDataItem(1.0f, 1.2f, 1.0f)
data << dataRow1 << dataRow2

创建一个新系列并为其设置数据:

series = QSurface3DSeries()
series.dataProxy().resetArray(data)
surface.addSeries(series)

最后你需要将其设置为可见:

surface.widget().show()

创建并显示此图表所需的完整代码如下:

if __name__ == "__main__":

    app = QApplication([])
    quickWidget = QQuickWidget()
    surface = Q3DSurfaceWidgetItem()
    surface.setWidget(quickWidget)
    surface.widget().setMinimumSize(QSize(256, 256))
    data = QSurfaceDataArray()
    dataRow1 = QSurfaceDataRow()
    dataRow2 = QSurfaceDataRow()
    dataRow1 << QSurfaceDataItem(0.0f, 0.1f, 0.5f) << QSurfaceDataItem(1.0f, 0.5f, 0.5f)
    dataRow2 << QSurfaceDataItem(0.0f, 1.8f, 1.0f) << QSurfaceDataItem(1.0f, 1.2f, 1.0f)
    data << dataRow1 << dataRow2
    series = QSurface3DSeries()
    series.dataProxy().resetArray(data)
    surface.addSeries(series)
    surface.widget().show()
    sys.exit(app.exec())

这就是这几行代码产生的结果:

../../_images/q3dsurface-minimal.png

场景可以旋转、放大,并且可以选择一个表面点来查看其位置,但在这个最小的代码示例中没有包含其他交互。您可以通过熟悉提供的示例来了解更多信息,例如Surface Graph Gallery

注意

当使用from __feature__ import true_property时,属性可以直接使用,否则通过访问器函数使用。

property axisXᅟ: QValue3DAxis

此属性保存活动的x轴。

axis设置为活动的x轴。隐式调用addAxis()以将轴的所有权转移到此图表。

如果 axis 为 null,则会创建一个没有标签且自动调整范围的临时默认轴。

如果另一个轴被显式设置为相同的方向,则此临时轴将被销毁。

另请参阅

addAxis() releaseAxis()

Access functions:
property axisYᅟ: QValue3DAxis

此属性保存活动的 y 轴。

axis设置为活动的y轴。隐式调用addAxis()以将轴的所有权转移到此图表。

如果 axis 为空,则会创建一个没有标签且自动调整范围的临时默认轴。

如果另一个轴被显式设置为相同的方向,则此临时轴将被销毁。

另请参阅

addAxis() releaseAxis()

Access functions:
property axisZᅟ: QValue3DAxis

此属性保存活动的z轴。

axis设置为活动的z轴。隐式调用addAxis()以将轴的所有权转移到此图表。

如果 axis 为空,则会创建一个没有标签且自动调整范围的临时默认轴。

如果另一个轴被显式设置为相同的方向,则此临时轴将被销毁。

另请参阅

addAxis() releaseAxis()

Access functions:
property flipHorizontalGridᅟ: bool

此属性表示水平轴网格是否显示在图表顶部而不是底部。

在某些使用场景中,水平轴网格大部分被表面覆盖,因此将水平轴网格显示在图表顶部而不是底部可能更有用。一个典型的用例是使用正交投影和自上而下的视角显示2D频谱图。

如果 false,水平轴网格和标签将绘制在图形的水平背景上。如果 true,水平轴网格和标签将绘制在图形的另一侧,与水平背景相对。默认为 false

Access functions:
property selectedSeriesᅟ: QSurface3DSeries

此属性保存选定的系列或为空。

如果selectionMode设置为MultiSeries,此属性将保存拥有所选点的系列。

Access functions:
__init__([parent=None])
Parameters:

父对象QObject

构造一个新的3D表面图,带有可选的parent

addAxis(axis)
Parameters:

axisQValue3DAxis

axis添加到图表中。通过addAxis添加的轴尚未被使用,addAxis仅用于将axis的所有权赋予图表。axis不能为空或已添加到另一个图表中。

addSeries(series)
Parameters:

seriesQSurface3DSeries

series添加到图表中。一个图表可以包含多个系列,但只有一组轴。如果新添加的系列指定了选定的项目,它将被突出显示,并且任何现有的选择将被清除。只有一个添加的系列可以有活动的选择。

另请参阅

hasSeries()

axes()
Return type:

QValue3DAxis的列表

返回所有添加的轴的列表。

另请参阅

addAxis()

axisX()
Return type:

QValue3DAxis

另请参阅

setAxisX()

属性 axisXᅟ 的获取器。

axisXChanged(axis)
Parameters:

axisQValue3DAxis

属性 axisXᅟ 的通知信号。

axisY()
Return type:

QValue3DAxis

另请参阅

setAxisY()

属性 axisYᅟ 的获取器。

axisYChanged(axis)
Parameters:

axisQValue3DAxis

属性 axisYᅟ 的通知信号。

axisZ()
Return type:

QValue3DAxis

另请参阅

setAxisZ()

属性 axisZᅟ 的获取器。

axisZChanged(axis)
Parameters:

axisQValue3DAxis

属性 axisZᅟ 的通知信号。

flipHorizontalGrid()
Return type:

布尔

属性 flipHorizontalGridᅟ 的获取器。

flipHorizontalGridChanged(flip)
Parameters:

flip – 布尔值

属性 flipHorizontalGridᅟ 的通知信号。

releaseAxis(axis)
Parameters:

axisQValue3DAxis

如果axis被添加到此图中,则将其所有权释放回调用者。如果释放的axis正在使用中,将创建一个新的默认轴并设置为活动状态。

如果默认轴被释放并稍后重新添加,它的行为将与其他任何轴相同。

removeSeries(series)
Parameters:

seriesQSurface3DSeries

从图表中移除series

另请参阅

hasSeries()

selectedSeries()
Return type:

QSurface3DSeries

属性 selectedSeriesᅟ 的获取器。

selectedSeriesChanged(series)
Parameters:

seriesQSurface3DSeries

属性 selectedSeriesᅟ 的通知信号。

seriesList()
Return type:

QSurface3DSeries的列表

返回添加到该图表的系列列表。

另请参阅

hasSeries()

setAxisX(axis)
Parameters:

axisQValue3DAxis

另请参阅

axisX()

属性 axisXᅟ 的设置器。

setAxisY(axis)
Parameters:

axisQValue3DAxis

另请参阅

axisY()

属性 axisYᅟ 的设置器。

setAxisZ(axis)
Parameters:

axisQValue3DAxis

另请参阅

axisZ()

属性 axisZᅟ 的设置器。

setFlipHorizontalGrid(flip)
Parameters:

flip – 布尔值

另请参阅

flipHorizontalGrid()

属性 flipHorizontalGridᅟ 的设置器。