圆形渐变:
1.更改函数内容如下:
QRadialGradient radialGradient(200,100,100,200,100);
//其中参数分别为圆形渐变的圆心(200,100),半径100,和焦点(200,100) //这里让焦点和圆心重合,从而形成从圆心向外渐变的效果 radialGradient.setColorAt(0,Qt::black); radialGradient.setColorAt(1,Qt::yellow);
//渐变从焦点向整个圆进行,焦点为起始点0,圆的边界为1 QPainter painter(this);
painter.setBrush(radialGradient); painter.drawEllipse(100,0,200,200);
//绘制圆,让它正好和上面的圆形渐变的圆重合 效果如下:
2.要想改变填充的效果,只需要改变焦点的位置和渐变的颜色位置即可。 改变焦点位置:QRadialGradient radialGradient(200,100,100,100,100);
效果如下:
锥形渐变:
1.更改函数内容如下:
//圆锥渐变
QConicalGradient conicalGradient(50,50,0); //圆心为(50,50),开始角度为0
conicalGradient.setColorAt(0,Qt::green); conicalGradient.setColorAt(1,Qt::white); //从圆心的0度角开始逆时针填充 QPainter painter(this);
painter.setBrush(conicalGradient); painter.drawEllipse(0,0,100,100); 效果如下:
2.可以更改开始角度,来改变填充效果
QConicalGradient conicalGradient(50,50,30);
开始角度设置为30度,效果如下:
Qt 2D绘图(三)绘制文字
接着上一次的教程,这次我们学习在窗体上绘制文字。 1.绘制最简单的文字。 我们更改重绘函数如下:
void Dialog::paintEvent(QPaintEvent *) {
QPainter painter(this);
painter.drawText(100,100,”yafeilinux”); }
我们在(100,100)的位置显示了一行文字,效果如下。
2.为了更好的控制字体的位置。我们使用另一个构造函数。在帮助里查看drawText,如下。
这里我们看到了构造函数的原型和例子。其中的flags参数可以控制字体在矩形中的位置。我们更改函数内容如下。
void Dialog::paintEvent(QPaintEvent *) {
QPainter painter(this); QRectF ff(100,100,300,200); //设置一个矩形
painter.drawRect(ff);
//为了更直观地看到字体的位置,我们绘制出这个矩形 painter.setPen(QColor(Qt::red)); //设置画笔颜色为红色
painter.drawText(ff,Qt::AlignHCenter,”yafeilinux”); //我们这里先让字体水平居中 }
效果如下。
可以看到字符串是在最上面水平居中的。如果想让其在矩形正中间,我们可以使用Qt::AlignCenter。
这里我们也可以使用两个枚举变量进行按位与操作,例如可以使用
Qt::AlignBottom|Qt::AlignHCenter实现让文字显示在矩形下面的正中间。效果如下。
对于较长的字符串,我们也可以利用“\\n”进行换行,例如”yafei\\nlinux”。效果如下。
3.如果要使文字更美观,我们就需要使用QFont类来改变字体。先在帮助中查看一下这个类。