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);

}

實現效果:帶有圓角的背景圖,圓角效果如下

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章