目录
[1.paintEvent 用法概述](#1.paintEvent 用法概述)
QPainter
在 Qt 中,paintEvent(QPaintEvent *event)
是一个虚函数,用于在窗口或控件上自定义绘图。它被 QWidget
或其子类调用,每当需要重新绘制窗口时,Qt 会自动触发 paintEvent
。
1.paintEvent
用法概述
当你想要自定义控件的外观或在窗口上绘制自定义图形时,需要重写 paintEvent
函数。在这个函数内部,你可以使用 QPainter
对象来绘制各种形状、文本、图像等内容。
2.示例
然后转到槽
cpp
#include "widget.h"
#include "ui_widget.h"
#include <QPainter>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
void Widget::paintEvent(QPaintEvent *event){
Q_UNUSED(event);
/*Q_UNUSED(event) 是 Qt 中的一个宏,用于避免编译器发出"未使用参数"警告。当某个函数接受的参数未被使用时,编译器通常会发出警告,使用 Q_UNUSED 可以显式地标记该参数为"未使用",从而避免此类警告。
具体解释
假设你重写了一个虚函数,但在实现中并不打算使用传入的参数。编译器可能会产生类似于"warning: unused parameter 'event'"这样的警告。为了保持代码整洁并避免这些不必要的警告,可以使用 Q_UNUSED 来告知编译器你知道这个参数未使用。*/
QPainter painter(this);//创建一个画家对象
painter.setRenderHint(QPainter::Antialiasing); //设置忽略抗锯齿,更加平滑
QPen pen; //画笔对象
pen.setColor(QColor("red"));//设置画笔颜色
pen.setWidth(5);//画线宽度
QBrush brush(QColor(0,255,0)); //定义刷子,实例化构造函数填充颜色
//把画笔和刷子交给画家
painter.setPen(pen);
painter.setBrush(brush);
//矩形
painter.drawRect(200,100,100,100);
//三角形
QPolygon polygon;
polygon.setPoints(3,100,20,200,505,300,300);
painter.drawPolygon(polygon);
//画线
painter.drawLine(400,400,500,500);
//椭圆
painter.drawEllipse(300,300,200,100);
//画文本
QRectF rectF(0,0,100,200);
painter.drawText(rectF,Qt::AlignHCenter,"Ciallo");
}
3.小项目
看到这个网站Ciallo~(∠・ω< )⌒★ 我就想着用Qt也做一个玩玩,刚好这里也涉及到QPainter的内容,下面我已经把源码以及整个项目封装好了(即使没有Qt环境也可以运行哦),可自行下载食用(欢迎广大尊贵的柚子厨玩家Ciallo~(∠・ω< )⌒☆)
通过网盘分享的文件:ciallo.rar
链接: https://pan.baidu.com/s/184XjcX82bZCv2jpiWsWBnw?pwd=0721 提取码: 0721
效果展示:
1729614962078