PySide6.QtWidgets.QGraphicsEffect¶
- class QGraphicsEffect¶
QGraphicsEffect
类是所有图形效果的基类。更多…继承自:
QGraphicsOpacityEffect
,QGraphicsDropShadowEffect
,QGraphicsColorizeEffect
,QGraphicsBlurEffect
在版本4.6中添加。
概要¶
属性¶
enabledᅟ
- 效果是否启用
方法¶
def
__init__()
def
boundingRect()
def
drawSource()
def
isEnabled()
def
sourceIsPixmap()
def
sourcePixmap()
虚拟方法¶
def
draw()
def
sourceChanged()
插槽¶
def
setEnabled()
def
update()
信号¶
def
enabledChanged()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
效果通过挂钩到渲染管道并在源(例如,
QGraphicsPixmapItem
)和目标设备(例如,QGraphicsView
的视口)之间操作来改变元素的外观。可以通过调用setEnabled
(false)来禁用效果。如果效果被禁用,源将直接渲染。要为
QGraphicsItem
添加视觉效果,例如,您可以使用标准效果之一,或者通过创建QGraphicsEffect
的子类来创建自己的效果。然后可以使用setGraphicsEffect()
将效果安装到项目上。Qt 提供了以下标准效果:
QGraphicsBlurEffect
- 通过给定的半径模糊项目QGraphicsDropShadowEffect
- 在项目后面渲染一个阴影QGraphicsColorizeEffect
- 以任何给定颜色的阴影渲染项目QGraphicsOpacityEffect
- 以不透明度渲染项目
有关如何使用每种效果的更多信息,请参阅特定效果的文档。
要创建您自己的自定义效果,请创建
QGraphicsEffect
(或任何其他现有效果)的子类,并重新实现虚函数draw()
。每当效果需要重新绘制时,都会调用此函数。draw()
函数将用于绘制的画师作为参数。有关更多信息,请参阅draw()
的文档。在draw()
函数中,您可以调用sourcePixmap()
来获取图形效果源的像素图,然后您可以对其进行处理。如果你的效果发生变化,使用
update()
来请求重绘。如果你的自定义效果改变了源的边界矩形,例如,径向发光效果可能需要应用额外的边距,你可以重新实现虚拟的boundingRectFor()
函数,并在矩形发生变化时调用updateBoundingRect()
来通知框架。虚拟的sourceChanged()
函数被调用来通知效果源以某种方式发生了变化——例如,如果源是QGraphicsRectItem
并且其矩形参数发生了变化。- class ChangeFlag¶
(继承自
enum.Flag
) 此枚举描述了 QGraphicsEffectSource 中发生的变化。常量
描述
QGraphicsEffect.SourceAttached
效果已安装在源上。
QGraphicsEffect.SourceDetached
效果在源上被卸载。
QGraphicsEffect.SourceBoundingRectChanged
源的边界矩形已更改。
QGraphicsEffect.SourceInvalidated
源的视觉外观已更改。
- class PixmapPadMode¶
此枚举描述了从
sourcePixmap
返回的像素图应如何填充。常量
描述
QGraphicsEffect.NoPad
位图不应接收任何额外的填充。
QGraphicsEffect.PadToTransparentBorder
位图应被填充以确保其具有完全透明的边框。
QGraphicsEffect.PadToEffectiveBoundingRect
位图应填充以匹配效果的有效边界矩形。
注意
当使用
from __feature__ import true_property
时,属性可以直接使用,否则通过访问器函数使用。- property enabledᅟ: bool¶
此属性表示效果是否启用。
如果效果被禁用,源将正常渲染,不受效果的影响。如果效果启用,源将应用效果进行渲染。
此属性默认启用。
使用此属性,您可以在慢速平台上禁用某些效果,以确保用户界面的响应性。
- Access functions:
构造一个新的
QGraphicsEffect
实例,该实例具有指定的parent
。返回此效果的有效边界矩形,即源在设备坐标中的边界矩形,根据效果本身应用的任何边距进行调整。
返回此效果的有效边界矩形,给定设备坐标中的
rect
。在编写自定义效果时,每当任何可能导致此函数返回不同值的参数发生更改时,必须调用updateBoundingRect()
。另请参阅
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
这个纯虚函数绘制效果,并在需要绘制源时调用。
在
QGraphicsEffect
子类中重新实现此函数,以使用painter
提供效果的绘制实现。例如:
MyGraphicsEffect::draw(QPainter painter) ... offset = QPoint() if sourceIsPixmap(): # No point in drawing in device coordinates (pixmap will be scaled anyways). pixmap = sourcePixmap(Qt.LogicalCoordinates, offset) ... painter.drawPixmap(offset, pixmap) else: # Draw pixmap in device coordinates to avoid pixmap scaling pixmap = sourcePixmap(Qt.DeviceCoordinates, offset) painter.setWorldTransform(QTransform()) ... painter.drawPixmap(offset, pixmap) ...
此函数不应由用户显式调用,因为它仅用于重新实现的目的。
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
直接使用给定的
painter
绘制源。此函数应仅从
draw()
调用。例如:
MyGraphicsOpacityEffect::draw(QPainter painter) # Fully opaque; draw directly without going through a pixmap. if qFuzzyCompare(m_opacity, 1): drawSource(painter) return ...
另请参阅
- enabledChanged(enabled)¶
- Parameters:
enabled – 布尔值
每当效果启用或禁用时,都会发出此信号。
enabled
参数保存效果的新启用状态。另请参阅
属性
enabledᅟ
的通知信号。- isEnabled()¶
- Return type:
布尔
属性
enabledᅟ
的获取器。- setEnabled(enable)¶
- Parameters:
enable – 布尔值
另请参阅
属性
enabledᅟ
的设置器。- sourceBoundingRect([system=Qt.LogicalCoordinates])¶
- Parameters:
系统 –
CoordinateSystem
- Return type:
返回映射到给定
system
的源边界矩形。在
draw()
之外使用Qt::DeviceCoordinates调用此函数将产生未定义的结果,因为没有可用的设备上下文。另请参阅
- sourceChanged(flags)¶
- Parameters:
flags –
ChangeFlag
的组合
此虚拟函数由
QGraphicsEffect
调用,以通知效果源已更改。如果效果应用了任何缓存,则必须清除此缓存以反映源的新外观。flags
描述了发生了什么变化。- sourceIsPixmap()¶
- Return type:
布尔
如果源实际上是一个像素图,例如一个
QGraphicsPixmapItem
,则返回true
。此函数对于优化目的非常有用。例如,如果此函数返回
true
,则无需在设备坐标中绘制源以避免位图缩放 - 源位图无论如何都会被缩放。- sourcePixmap([system=Qt.LogicalCoordinates[, offset=None[, mode=QGraphicsEffect.PixmapPadMode.PadToEffectiveBoundingRect]]])¶
- Parameters:
system –
CoordinateSystem
offset –
QPoint
mode –
PixmapPadMode
- Return type:
返回一个绘制了源图像的pixmap。
system
指定用于源的坐标系。可选的offset
参数返回使用当前画师绘制像素图时应绘制的偏移量。要控制像素图的填充方式,请使用mode
参数。当
system
为Qt::DeviceCoordinates时,返回的pixmap会被裁剪到当前画家的设备矩形。在
draw()
之外使用Qt::DeviceCoordinates调用此函数将产生未定义的结果,因为没有可用的设备上下文。另请参阅
- update()¶
安排效果的重新绘制。每当效果需要重新绘制时调用此函数。此函数不会触发源的重新绘制。
另请参阅
- updateBoundingRect()¶
当效果的边界矩形发生变化时,此函数通知效果框架。作为自定义效果作者,每当您更改任何会导致虚拟
boundingRectFor()
函数返回不同值的参数时,必须调用此函数。如果必要,此函数将调用
update()
。