图形视图(25):【类】QGraphicsEffect[官翻]

QGraphicsEffect 类

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

Header:#include < QGraphicsEffect >
qmake:QT += widgets
Inherits:QObject
Inherited By:QGraphicsBlurEffect, QGraphicsColorizeEffect, QGraphicsDropShadowEffect, QGraphicsOpacityEffect
Since:Qt 4.6

详述

特效通过连接到渲染管道来改变元素的外观,并在源设备(例如,QGraphicsPixmapItem)和目标设备(例如,QGraphicsView的viewport)之间操作。可以通过调用setEnabled(false)来禁用效果。如果特效被禁用,则直接渲染源。
例如,要向QGraphicsItem添加视觉效果,您可以使用一种标准效果,或者通过创建QGraphicsEffect的子类来创建您自己的效果。然后可以使用QGraphicsItem::setGraphicsEffect()将效果安装在项目上。

Qt提供以下标准效果:

  • QGraphicsBlurEffect—按给定半径模糊项目
  • QGraphicsDropShadowEffect—在项目后面渲染一个阴影
  • QGraphicsColorizeEffect—以任何给定颜色的阴影渲染项目
  • QGraphicsOpacityEffect—使用不透明度渲染项目
img
imgimg
imgimg

img

有关如何使用每种效果的更多信息,请参阅特定效果的文档。

要创建您自己的自定义效果,请创建QGraphicsEffect(或任何其他现有效果)的子类,并重新实现虚函数draw()。这个函数在需要重绘效果时被调用。draw()函数将绘制所用的绘制器作为参数。有关更多信息,请参阅draw()的文档。在draw()函数中,您可以调用sourcePixmap()来获得图形效果源的像素图,然后您可以对其进行处理。

如果你的效果改变了,使用update()请求重新绘制。如果你的自定义效果改变了源的边框,例如,一个径向发光效果可能需要应用一个额外的边框,你可以重新实现虚拟的boundingRectFor()函数,并调用updateBoundingRect()来通知框架,每当这个矩形发生变化。virtual sourceChanged()函数会被调用,以通知效果源以某种方式发生了变化——例如,如果源是一个qgraphicsrectem,并且它的矩形参数发生了变化。

参见QGraphicsItem::setGraphicsEffect()和QWidget::setGraphicsEffect()。

公共类型

enum ChangeFlag

flags ChangeFlags

该枚举描述了QGraphicsEffectSource中发生的变化。

ConstantValueDescription
QGraphicsEffect::SourceAttached0x1效果安装在源上。
QGraphicsEffect::SourceDetached0x2在源上卸载效果。
QGraphicsEffect::SourceBoundingRectChanged0x4源的边界矩形已经改变。
QGraphicsEffect::SourceInvalidated0x8源的外观发生了变化。

enum PixmapPadMode

该枚举描述了如何填充从sourcePixmap返回的像素映射。

ConstantValueDescription
QGraphicsEffect::NoPad0像素图不应该接收任何额外的填充。
QGraphicsEffect::PadToTransparentBorder1像素图应该被填充,以确保它有一个完全透明的边界。
QGraphicsEffect::PadToEffectiveBoundingRect2像素图应该被填充以匹配效果的有效边界矩形。

属性

enabled : bool

此属性保存是否启用该效果

如果一个效果被禁用,源将以正常方式呈现,不会受到效果的干扰。如果启用了该效果,则将应用该效果来渲染源。
此属性在默认情况下是启用的。

使用此属性,您可以在速度较慢的平台上禁用某些效果,以确保用户界面是响应性的。

Access functions:

  • bool isEnabled() const
  • void setEnabled(bool enable)

Notifier signal:

  • void enabledChanged(bool enabled)

公共函数

构造和析构

  1. QGraphicsEffect(QObject *parent = nullptr)
  2. virtual ~QGraphicsEffect()

属性

  1. bool isEnabled() const
  2. void setEnabled(bool enable)

边界

  1. QRectF boundingRect() const
  2. virtual QRectF boundingRectFor(const QRectF &rect) const

公共槽

  1. void setEnabled(bool enable)
  2. void update()

信号

  1. void enabledChanged(bool enabled)

受保护的函数

  1. virtual void draw(QPainter *painter) = 0
  2. void drawSource(QPainter *painter)
  3. QRectF sourceBoundingRect(Qt::CoordinateSystem system = Qt::LogicalCoordinates) const
  4. virtual void sourceChanged(QGraphicsEffect::ChangeFlags flags)
  5. bool sourceIsPixmap() const
  6. QPixmap sourcePixmap(Qt::CoordinateSystem system = Qt::LogicalCoordinates, QPoint *offset = nullptr, QGraphicsEffect::PixmapPadMode mode = PadToEffectiveBoundingRect) const
  7. void updateBoundingRect()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值