Qt 设置圆角图片控件

使用paintEvent设置上半圆角窗口

void ImgWidget::paintEvent(QPaintEvent *event)
{
    Q_UNUSED(event)
    QPainter painter(this);
    painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing,true);
    painter.setPen(Qt::NoPen);
    QPainterPath m_clipPath;

    QRect rectT = rect();
    qreal x = rectT.x();
    qreal y = rectT.y();
    qreal w = rectT.width();
    qreal h = rectT.height();
    qreal rxx2 = 8;
    qreal ryy2 = 8;
    m_clipPath.arcMoveTo(x, y, rxx2, ryy2, 180);
    m_clipPath.arcTo(x, y, rxx2, ryy2, 180, -90);
    m_clipPath.arcTo(x+w-rxx2, y, rxx2, ryy2, 90, -90);
    m_clipPath.lineTo(x+w,y+h);
    m_clipPath.lineTo(x,y+h);
    // -----底部圆角设置
    //            m_clipPath.arcTo(x+w-rxx2, y+h-ryy2, rxx2, ryy2, 0, -90);
    //            m_clipPath.arcTo(x, y+h-ryy2, rxx2, ryy2, 270, -90);
    m_clipPath.closeSubpath();

    painter.setClipPath(m_clipPath);
    painter.drawPixmap(rect(), m_pix);

}

实现效果:带有圆角的背景图,圆角效果如下

Qt 设置圆角图片控件_第1张图片

你可能感兴趣的:(Qt学习,qt)