Qt实现圆型控件的三种方法之子类化控件并重写paintEvent

admin2024-08-23  8

前言

最近在研究绘制各种形状的控件,这里专门挑出圆形的控件进行记录,其它形状的也大差不差,会了圆形的之后其它的也类似。

正文

这里我挑出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);

}

Qt实现圆型控件的三种方法之子类化控件并重写paintEvent,在这里插入图片描述,第1张

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明原文出处。如若内容造成侵权/违法违规/事实不符,请联系SD编程学习网:675289112@qq.com进行投诉反馈,一经查实,立即删除!