- 绘图事件不用手动调用,通过重写父类虚函数之后会自动调用
- 绘图基本设置,要有画家——画家类
- 可以设置画笔,比如画笔颜色和线条样式
- 可以设置画刷,可以对封闭图形进行涂刷。画刷的颜色,和画刷的样式
设置完画笔之后,不要忘了,要把这个对象传入画家,才能画出美丽的图形
重写父类虚函数,防止写错,加上override
//画图事件
void paintEvent(QPaintEvent *event) override;
主要代码,可以实现画线、矩形、椭圆、圆、文字、等基本图案
//绘图事件,也不用手动调用,系统会自动调用
void Widget::paintEvent(QPaintEvent *event)
{
//这是画家类,定义一个画家的对象
QPainter paint(this);
//设置颜色
paint.setPen(QColor(200, 0, 0));
//设置线条样式
//paint.setPen(Qt::DashLine);
//像pen这种类既可以设置风格,又可以设置颜色,最好就不要用无名对象了\
把这个对象单独拎出来,最后让画家拿起这个画笔,清晰明了。
QPen pen;
pen.setColor(QColor(0, 0, 255));
pen.setStyle(Qt::DashLine);
//设置完画笔还可以设置画刷,画刷就是对于封闭图形可以进行颜色填充
QBrush brush;
brush.setColor(QColor(0, 255, 0));
brush.setStyle(Qt::HorPattern);
//最后别忘了把设置的画笔、画刷给放到笔上呀!!
paint.setPen(pen);
paint.setBrush(brush);
//画线
paint.drawLine(QPoint(0, 0), QPoint(100, 100));
//画圆、椭圆
//这是无名对象,方便快捷,也可以给QPoint定义一个对象point1,如下所示:
paint.drawEllipse(QPoint(100, 100), 50, 50);
QPoint point1;
point1.setX(100);
point1.setY(100);
//画矩形
paint.drawRect(QRect(QPoint(100, 100), QPoint(200, 200)));
//画文字
paint.drawText(QPoint(200, 200), "好好学习,天天向上。。。。");
}
结果展示:
注意事项:
- 在本例中大量使用无名对象,目的就是方便,省事,节约空间时间
- 无名对象缺点也很明显,如果需要设置的参数有多个,并且构造函数没有提供,如果多次调用,很可能会被覆盖,仅仅最后一条代码生效
- 当形参对象有多个参数时,最好实例化对象,拿出来单独设置,最后将对象整体传入