ViewObject

本文介绍了视图对象(VO)的概念及其在应用程序中的作用。VO用于封装特定页面的数据,并管理数据库查询语句。文章详细解释了基于实体和非实体的VO的区别及应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

VO(View Object):视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。

 

VO,就是一切给 View 提供数据的对象。

 

ViewObject判断应用程序将如何查看和更新​​数据。视图对象可以是基于实体的或基于非实体的。在前一种情况下,View对象由一个或多个实体基础组成。这些中的第一个被称为主要实体基础。其余的称为次级实体基础。基于实体的View Object将其属性(View Attributes)映射到Entities(Entity Attributes)中的属性。基于实体的视图对象可以映射其所有实体属性或仅其中的一些。但是,需要一个基于实体的视图对象来映射实体基础的所有主键属性。基于实体的视图对象可能包含未映射到实体属性的附加包含属性。这样的属性被称为View level属性。

 

基于非实体的视图对象是没有任何实体基础的视图对象。它的所有属性都是View级属性。

 

View Object负责管理数据库查询语句。无论View对象是否为实体,它可能都有一个SQL语句,它从中绘制其数据。当从这个查询读取行时,它将RowSet使用View行填充一个(该View对象)。

 

View Object提供了许多API,客户端可以在运行时修改和扩充查询语句。例如,见ViewObject#setWhereClause()。

 

View级属性(未映射到Entity属性)可能映射到查询语句中的列或SQL表达式。它可能是一个暂时属性(其数据纯粹在内存中,而不是映射到任何数据库列/表达式,或者它可能是一个动态属性。


import FreeCAD import FreeCADGui from PySide import QtGui, QtCore Gui.activateWorkbench("PartWorkbench") FreeCAD.newDocument() class SphereDialog(QtGui.QDialog): def __init__(self): super().__init__() self.setWindowTitle("Create Sphere") self.create_widgets() def create_widgets(self): layout = QtGui.QVBoxLayout() # Radius widget radius_label = QtGui.QLabel("Radius:") self.radius_spinbox = QtGui.QDoubleSpinBox() self.radius_spinbox.setMinimum(0.1) self.radius_spinbox.setMaximum(1000.0) self.radius_spinbox.setValue(10.0) layout.addWidget(radius_label) layout.addWidget(self.radius_spinbox) # Opacity widget opacity_label = QtGui.QLabel("Opacity:") self.opacity_slider = QtGui.QSlider(QtCore.Qt.Horizontal) self.opacity_slider.setMinimum(0) self.opacity_slider.setMaximum(100) self.opacity_slider.setValue(50) layout.addWidget(opacity_label) layout.addWidget(self.opacity_slider) # Create button create_button = QtGui.QPushButton("Create") create_button.clicked.connect(self.create_sphere) layout.addWidget(create_button) self.setLayout(layout) def create_sphere(self): # Get sphere parameters radius = self.radius_spinbox.value() opacity = float(self.opacity_slider.value() / 100) # Create sphere sphere = FreeCAD.ActiveDocument.addObject("Part::Sphere", "Sphere") sphere.Radius = radius sphere.ViewObject.Transparency = int(round(opacity * 100)) # Show in 3D view sphere.ViewObject.Visibility = True FreeCADGui.SendMsgToActiveView("ViewFit") FreeCADGui.Selection.clearSelection() FreeCADGui.Selection.addSelection(sphere) FreeCADGui.SendMsgToActiveView("ViewFit") # Close dialog self.close() dialog = SphereDialog() dialog.show()代码中执行没有球体出现,请修改代码
05-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值