在头文件添加绘图事件
protected:
void paintEvent(QPaintEvent *event);
在源文件进行实现
#include <QPainter>
#include <QGradient>
void CPaintPrac::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
QBrush brush; //define a brush
brush.setColor(Qt::blue); //set color for brush
brush.setStyle(Qt::SolidPattern); //set style for brush
QPen pen; //define a pen
pen.setColor(Qt::black); //set color for the pen
pen.setStyle(Qt::DotLine); //set style for the pen
painter.setPen(pen); //set pen for the painter
painter.setBrush(brush); //set brush for the painter
//draw a rect from (20,20) to (300,400)
painter.drawRect(QRectF(250,200,300,150));
//draw two lines
painter.drawLine(QPointF(200,150),QPointF(250,200));
painter.drawLine(QPointF(550,200),QPointF(600,150));
//draw an arc
int startAngle = 30*16;
int spanAngle = 120*16;
QRectF rectangle(250,50,300,150);
painter.drawArc(rectangle,startAngle,spanAngle);
//线性渐变
QLinearGradient linearGradient(QPointF(250,400),QPointF(550,400));
linearGradient.setColorAt(0,Qt::green);
linearGradient.setColorAt(0.3,Qt::blue);
linearGradient.setColorAt(0.6,Qt::yellow);
linearGradient.setColorAt(1,Qt::red);
linearGradient.setSpread(QGradient::PadSpread);
linearGradient.setStart(QPointF(250,400));
linearGradient.setFinalStop(550,400);
painter.setBrush(linearGradient);
painter.drawRect(QRectF(250,400,300,150));
//辐射渐变,a4\a5 is x/y of the focus point
QRadialGradient radianalGradient(150,100,50,200,150);
radianalGradient.setColorAt(0,Qt::red);
radianalGradient.setColorAt(0.3,Qt::green);
radianalGradient.setColorAt(0.7,Qt::blue);
radianalGradient.setColorAt(1,Qt::yellow);
radianalGradient.setSpread(QGradient::ReflectSpread);
painter.setBrush(radianalGradient);
painter.drawEllipse(QRectF(100,50,100,100));
//锥形渐变
QConicalGradient conicalGradient(QPointF(650,100),50);
conicalGradient.setColorAt(0,Qt::gray);
conicalGradient.setColorAt(0.4,Qt::red);
conicalGradient.setColorAt(0.7,Qt::blue);
conicalGradient.setColorAt(1,Qt::cyan);
painter.setBrush(conicalGradient);
painter.drawEllipse(QRectF(600,50,100,100));
}
绘制效果图
觉得博客对你有帮助的话: