精通Qt4编程
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

7.2 图形效果

Qt4.6的新特性之一就是图形效果(graphics effect)。图形效果相当于在源图像和目标绘图设备中加了过滤器,改变了图形显示效果。图形效果可以施加于QGraphicsItem或QWidget。所有的图形效果基类为QGraphicsEffect,Qt提供了四种标准效果类,用户也可以从QGraphicsEffect类继承形成自己的图形效果类。

Qt提供的标准图形效果类如表7-2所示。

表7-2 Qt图形效果类

每个图形效果类都有效果参数设置,下面以一个测试图形效果的例子来说明,源代码可从博文视点网站获取。程序运行效果图7-2所示。

图7-2 图形效果演示

首先使用Qt Designer设计一个窗口,左边为QGraphicsView,右边为效果控制参数控件。这里选取阴影效果中颜色按钮组选择的响应函数分析,代码如下:

        void EffectWidget::setShadowColor(int i)
        {
            m_shadowColor = static_cast<Qt::GlobalColor>(i);
            m_shadowColor.setAlpha(180);
            QGraphicsDropShadowEffect* de = new QGraphicsDropShadowEffect;
            de->setBlurRadius(shadowRSpin->value());
            de->setOffset(xOffsetSpin->value(),yOffsetSpin->value());
            de->setColor(m_shadowColor);
            m_item->setGraphicsEffect(de);
        }

QGraphicsDropShadowEffect类可控制的属性有阴影偏移量、阴影颜色、阴影模糊度,在函数中都进行了设置。设置好效果对象参数后,通过QGraphicsItem类的setGraphicsEffect()函数设置图形效果,如果QGraphicsItem之前设置过图形效果,则删除旧的图形效果,应用新的图形效果。

读者可编译运行程序并控制各种效果参数,对各种效果进行实验。