前言
最近在研究绘制各种形状的控件,这里专门挑出圆形的控件进行记录,其它形状的也大差不差,会了圆形的之后其它的也类似。
正文
这里我挑出Label来进行举例。
子类化 QLabel 并重写 paintEvent
如果需要更复杂的自定义绘制,可以通过子类化 QLabel
并重写 paintEvent
函数来实现。
void CircleLabel::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
// 设置抗锯齿
painter.setRenderHint(QPainter::Antialiasing);
//载入图像
QPixmap pixmap(":/images/faceBackground.PNG");
// 创建圆形路径
QPainterPath path;
path.addEllipse(0, 0, width(), height());
painter.setClipPath(path);
// 填充背景颜色
painter.fillPath(path, QBrush(QColor("#f7f7f7")));
//绘制图像
painter.drawPixmap(rect(),pixmap);
// 调用父类的 paintEvent 以绘制文本
QLabel::paintEvent(event);
}