Qt的辐射渐变类QRadialGradient在构造上,分为简单辐射渐变(simple radial gradient)和扩展辐射渐变(extended radial gradient)。
简单辐射渐变又有两种构造函数:
(1)QRadialGradient::QRadialGradient(qreal cx, qreal cy, qreal radius);
---Constructs a simple radial gradient with the center at (cx, cy) and the specified radius. The focal point lies at the center of the circle.
【译文】:构造一个简单辐射渐变对象,中心位于(cx,cy),半径为radius, 焦点位于圆心处。
这部分的测试,之前已在头条发布,此处省略。
(2)QRadialGradient(const QPointF ¢er, qreal radius, const QPointF &focalPoint);
Constructs a simple radial gradient with the given center, radius and focalPoint.
【译文】:构造一个简单辐射渐变,中心圆点是点center,半径是Radius;焦点圆的圆心是focalPoint,焦点圆的半径没有出现参数里。
本文测试第二个构造函数,先看测试结果:
改写的paintEvent( QPaintEvent *e)函数:
void Widget::paintEvent(QPaintEvent *e)
{
const int r =200;
QPainter painter(this);
//将坐标系原点平移到窗体的中心
painter.translate(width()/2, height()/2);
//创建一个简单辐射渐变对象,圆心位于原点,半径为r;焦点圆圆心为(r/2.0,r/2.0)。
QRadialGradient radialGradient(QPointF(0,0),r,QPointF(r/2.0,r/2.0));
//从焦点开始,往中心圆圆心方向,依次插入蓝色、白色和黑色。
radialGradient.setColorAt(0.0, Qt::blue);
radialGradient.setColorAt(0.3, Qt::white);
radialGradient.setColorAt(0.6, Qt::black);
//创建画刷,传入简单辐射渐变对象作为画刷构造函数的参数
QBrush brush(radialGradient);
painter.setPen(Qt::NoPen);
//将画刷添加到画家
painter.setBrush(brush);
//绘制一个圆心位于原点、半径为r的圆,观察渐变效果
painter.drawEllipse(QPoint(0, 0), r, r);
//也可以绘制一个左上角坐标为(-2r,-2r),边长为4r的正方形观察
//painter.drawRect(-2*r,-2*r,4*r,4*r);
}
小结:本文示范了简单辐射渐变第二种构造函数的用法。在画刷的样式设置中,渐变样式是相对比较复杂一点的方式。使用渐变色,可以美化部件的外观。