Qt之QtPainter:渐变风格[Qt5开发实战]

1、新建QT GUI, 基类选择QWidget,取消“创建界面”

2、在widget.h中添加#include <QPainter>和重写绘画事件定义:
 * protected:
    void paintEvent(QPaintEvent *event);
3、在widget.cpp中添加重绘事件void Widget::paintEvent(QPaintEvent *event)

4、线性渐变QLinearGradient


void Widget::paintEvent(QPaintEvent *event)
{
    QPainter painter;

    painter.begin(this);
    QLinearGradient ling(QPointF(70, 70), QPoint( 140, 140 ) );  //从起点到终点的渐变
    ling.setColorAt(0, Qt::blue);  //起点到中心要显示的颜色
    ling.setColorAt(1, Qt::green);
    ling.setSpread( QGradient::PadSpread );   //默认显示模式

    QBrush brush(ling);
    painter.setBrush(brush);
    painter.drawRect(0, 0, 200, 200);

    painter.end();
}

b6f33a50abdd0f62f8ba766f59529b45c3a.jpg

void Widget::paintEvent(QPaintEvent *event)
{
    QPainter painter;

    painter.begin(this);
    QLinearGradient ling(QPointF(70, 70), QPoint( 140, 140 ) );  //从起点到终点的渐变
    ling.setColorAt(0, Qt::blue);  //起点到中心要显示的颜色
    ling.setColorAt(1, Qt::green);
    ling.setSpread( QGradient::RepeatSpread );   //默认显示模式

    QBrush brush(ling);
    painter.setBrush(brush);
    painter.drawRect(0, 0, 200, 200);

    painter.end();
}

2a1251ee16dacfb2918a95a207106d2d9b8.jpg

void Widget::paintEvent(QPaintEvent *event)
{
    QPainter painter;

    painter.begin(this);
    QLinearGradient ling(QPointF(70, 70), QPoint( 140, 140 ) );  //从起点到终点的渐变
    ling.setColorAt(0, Qt::blue);  //起点到中心要显示的颜色
    ling.setColorAt(1, Qt::green);
    ling.setSpread( QGradient::ReflectSpread );   //默认显示模式

    QBrush brush(ling);
    painter.setBrush(brush);
    painter.drawRect(0, 0, 200, 200);

    painter.end();
}

00e754828b1a1e6cd582cc925880f6a4df7.jpg

5、圆心渐变QRadialGradient

void Widget::paintEvent(QPaintEvent *event)
{
    QPainter painter;
    painter.begin(this);

    QRadialGradient radg(100, 100, 50, 120, 120);  //在圆心(100, 100),半径50的圆上渐变。渐变起点是(120, 120)
    radg.setColorAt( 0, Qt::black );
    radg.setColorAt( 1, Qt::white );
    //radg.setSpread(QGradient::PadSpread);   //默认
    QBrush brush(radg);
    painter.setBrush(brush);
    painter.drawRect(0, 0, 200, 200);
    painter.end();
}

0eaec383eec476427f07448aba36047eb41.jpg

 

void Widget::paintEvent(QPaintEvent *event)
{
    QPainter painter;
    painter.begin(this);

    QRadialGradient radg(100, 100, 50, 120, 120);  //在圆心(100, 100),半径50的圆上渐变。渐变起点是(120, 120)
    radg.setColorAt( 0, Qt::black );
    radg.setColorAt( 1, Qt::white );
    radg.setSpread(QGradient::RepeatSpread);
    QBrush brush(radg);
    painter.setBrush(brush);
    painter.drawRect(0, 0, 200, 200);
    painter.end();
}

ecf0468788a6659f383698f70dd8938a622.jpg

void Widget::paintEvent(QPaintEvent *event)
{
    QPainter painter;
    painter.begin(this);

    QRadialGradient radg(100, 100, 50, 120, 120);  //在圆心(100, 100),半径50的圆上渐变。渐变起点是(120, 120)
    radg.setColorAt( 0, Qt::black );
    radg.setColorAt( 1, Qt::white );
    radg.setSpread(QGradient::ReflectSpread);
    QBrush brush(radg);
    painter.setBrush(brush);
    painter.drawRect(0, 0, 200, 200);
    painter.end();
}

a821d19ed104822fbf983f51169cd2f8412.jpg

6、坐标角度渐变QConicalGradient

void Widget::paintEvent(QPaintEvent *event)
{
    QPainter painter;
    painter.begin(this);

    QConicalGradient cong( 100, 100, 45.0 );  //在(100, 100)坐标上以45°为中心渐变
    cong.setColorAt( 0, Qt::black );
    cong.setColorAt( 1, Qt::white );

    QBrush brush(cong);
    painter.setBrush(brush);
    painter.drawRect(0, 0, 200, 200);


    painter.end();
}

dd55b92bf994e67f657aec22e6421f53281.jpg

转载于:https://my.oschina.net/u/3919756/blog/1942433

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值