Home · All Classes · Modules  · QSS HELP  · QSS 案例 · VER007 HOME

QGraphicsEffect Class Reference
[QtGui module]

该QGraphicsEffect类是所有图形效果的基类。More...

继承QObject

通过继承QGraphicsBlurEffectQGraphicsColorizeEffectQGraphicsDropShadowEffectQGraphicsOpacityEffect

Types

Methods

Qt Signals


Detailed Description

该QGraphicsEffect类是所有图形效果的基类。

效果改变元素挂接到渲染管线和源(例如,一个操作之间的外观QGraphicsPixmapItem)和目标设备(例如,QGraphicsView的视口) 。效果可以通过调用setEnabled (​​假)被禁用。如果效果被禁用,源直接呈现。

要添加一个视觉效果的QGraphicsItem例如,您可以使用一个标准的影响,或交替,通过创建QGraphicsEffect的子类创建自己的效果。关于该项目的使用效果可以被安装QGraphicsItem.setGraphicsEffect( ) 。

Qt提供了以下标准的影响:

有关如何使用每种效果的更多信息,请参见具体效果的文档。

要创建自己的自定义效果,创造QGraphicsEffect (或任何其他现有效果)的一个子类,并重新实现虚函数draw( ) 。这个函数被调用时的效果需要重绘。该draw( )函数将画家与画作为参数。欲了解更多信息,请参阅documenation的draw( ) 。在draw( )函数可以调用sourcePixmap( )来获得图形效果的源,然后可以处理的像素图。

如果你的效果变化,使用update()来请求重绘。如果您的自定义效果改变源的边界矩形,例如,径向发光效果可能需要申请额外的保证金,您可以重新实现虚boundingRectFor( )函数,并调用updateBoundingRect( )通知框架每当这个矩形的变化。虚拟sourceChanged( )函数被调用以通知的影响,源已经以某种方式改变 - 例如,如果源是一个QGraphicsRectItem其矩形的参数发生了变化。


Type Documentation

QGraphicsEffect.ChangeFlag

这个枚举变量描述了在QGraphicsEffectSource发生了变化。

Constant Value Description
QGraphicsEffect.SourceAttached 0x1 效果是安装在一个源。
QGraphicsEffect.SourceDetached 0x2 效果被卸载的来源。
QGraphicsEffect.SourceBoundingRectChanged 0x4 源的边界矩形已经改变。
QGraphicsEffect.SourceInvalidated 0x8 源的视觉外观已经改变。

该ChangeFlags类型是一个typedef为QFlags\u003cChangeFlag\u003e 。它存储ChangeFlag值的或组合。

QGraphicsEffect.PixmapPadMode

这个枚举变量描述了如何从sourcePixmap返回的像素图会被填充。

Constant Value Description
QGraphicsEffect.NoPad 0 像素图不应该接受任何额外的填充。
QGraphicsEffect.PadToTransparentBorder 1 像素图会被填充,以确保它有一个完全透明的边框。
QGraphicsEffect.PadToEffectiveBoundingRect 2 像素图会被填充,以配合效果的有效边界矩形。

Method Documentation

QGraphicsEffect.__init__ (self, QObject parent = None)

parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。

构造一个新的QGraphicsEffect经指定的实例parent

QRectF QGraphicsEffect.boundingRect (self)

返回的有效边界矩形这种效果,即在设备坐标源的边界矩形,由效果本身应用的任何利润调整。

See also boundingRectFor()和updateBoundingRect( ) 。

QRectF QGraphicsEffect.boundingRectFor (self, QRectF sourceRect)

返回有效边界矩形这样的效果,给出了提供rect在设备的坐标。当你编写自己的自定义效果,你必须调用updateBoundingRect( )每当任何参数发生改变,可能会导致这个这个函数返回一个不同的值。

See also sourceBoundingRect( ) 。

QGraphicsEffect.draw (self, QPainter painter)

这种方法是抽象的,应在任何子类中重新实现。

这个纯虚函数绘制的效果,被称为每当源需要被绘制。

在重新实现这个函数QGraphicsEffect子类提供的效果的绘图实现,用painter

例如:

 MyGraphicsEffect.draw(QPainter *painter)
 {
     ...
     QPoint offset;
     if (sourceIsPixmap()) {
         // No point in drawing in device coordinates (pixmap will be scaled anyways).
         const QPixmap pixmap = sourcePixmap(Qt.LogicalCoordinates, &offset);
         ...
         painter->drawPixmap(offset, pixmap);
     } else {
         // Draw pixmap in device coordinates to avoid pixmap scaling;
         const QPixmap pixmap = sourcePixmap(Qt.DeviceCoordinates, &offset);
         painter->setWorldTransform(QTransform());
         ...
         painter->drawPixmap(offset, pixmap);
     }
     ...
 }

这个函数不应该显式调用的用户,因为它的意思是只重新实现的目的。

QGraphicsEffect.drawSource (self, QPainter painter)

绘制源直接使用给定的painter

此功能只能由被称为QGraphicsEffect.draw( ) 。

例如:

 MyGraphicsOpacityEffect.draw(QPainter *painter)
 {
     // Fully opaque; draw directly without going through a pixmap.
     if (qFuzzyCompare(m_opacity, 1)) {
         drawSource(painter);
         return;
     }
     ...
 }

See also QGraphicsEffect.draw( ) 。

bool QGraphicsEffect.isEnabled (self)

QGraphicsEffect.setEnabled (self, bool enable)

这种方法也是一个Qt槽与C + +的签名void setEnabled(bool)

QRectF QGraphicsEffect.sourceBoundingRect (self, Qt.CoordinateSystem system = Qt.LogicalCoordinates)

返回源映射到给定的边界矩形system

调用此函数Qt.DeviceCoordinatesQGraphicsEffect.draw( )将给不确定的结果,因为没有可用的设备上下文。

See also draw( ) 。

QGraphicsEffect.sourceChanged (self, ChangeFlags flags)

这个虚函数被调用QGraphicsEffect以通知源发生了变化的影响。如果效果适用于任何高速缓存,那么该缓存必须以反映源的全新亮相清除。

flags描述发生了什么变化。

bool QGraphicsEffect.sourceIsPixmap (self)

返回True如果源有效地为一个像素映射,例如,一个QGraphicsPixmapItem

此功能可用于优化目的。举例来说,有没有点绘制在设备中的源坐标,以避免像素图的缩放,如果这个函数返回True - 源像素图将反正缩放。

(QPixmap, QPoint offset) QGraphicsEffect.sourcePixmap (self, Qt.CoordinateSystem system = Qt.LogicalCoordinates, PixmapPadMode mode = QGraphicsEffect.PadToEffectiveBoundingRect)

返回一个像素图,画到它的来源。

system指定了坐标系也可以用于源。可选的offset返回参数的偏移,其中像素图应使用当前的画家来画。有关如何在像素图是填充用的控制mode参数。

返回的像素图剪切到当前画家的设备时,矩形system is Qt.DeviceCoordinates

调用此函数Qt.DeviceCoordinatesQGraphicsEffect.draw( )将给不确定的结果,因为没有可用的设备上下文。

See also draw()和boundingRect( ) 。

QGraphicsEffect.update (self)

这种方法也是一个Qt槽与C + +的签名void update()

附表的效果重绘。调用此函数时的效果需要重新绘制。该功能不会触发源的重绘。

See also updateBoundingRect( ) 。

QGraphicsEffect.updateBoundingRect (self)

该函数通知影响的框架时,效果的边界矩形已经改变。作为一个自定义效果的作者,你必须调用这个函数,每当您更改任何参数,将导致虚拟boundingRectFor( )函数返回一个不同的值。

这个函数会调用update( )如果这是必要的。

See also boundingRectFor( )boundingRect()和sourceBoundingRect( ) 。


Qt Signal Documentation

void enabledChanged (bool)

这是该信号的默认超载。

每当效果是启用或禁用该信号被发射。该enabled参数保存效果的新启用的状态。

See also isEnabled( ) 。




PyQt 4.10.3 for X11 Copyright © Riverbank Computing Ltd and Nokia 2012 Qt 4.8.5