QT边框阴影效果

方法一:

    this->setAttribute(Qt::WA_TranslucentBackground);
    //边框阴影效果
    QGraphicsDropShadowEffect* effect = new QGraphicsDropShadowEffect;
    effect->setBlurRadius(6);
    effect->setColor(Qt::black);
    effect->setOffset(0,0);
    this->setGraphicsEffect(effect);
    this->update();

此方法会有副作用。如果界面中有QWebEngineView,网页将不会实时刷新。最小化后再恢复时,也会出现一定的问题。
网上有人说改换OpenGL版本的就好了,我没有试过。
改用另一种方法去实现。

方法二:重载paintEvent函数

void WebView::paintEvent(QPaintEvent *event)
{
    QPainterPath path;
    path.setFillRule(Qt::WindingFill);
    path.addRect(10, 10, this->width()-20, this->height()-20);

    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing, true);
    painter.fillPath(path, QBrush(Qt::white));

    QColor color(0, 0, 0, 50);
    for(int i=0; i<10; i++)
    {
        QPainterPath path;
        path.setFillRule(Qt::WindingFill);
        path.addRect(10-i, 10-i, this->width()-(10-i)*2, this->height()-(10-i)*2);
        color.setAlpha(150 - qSqrt(i)*50);
        painter.setPen(color);
        painter.drawPath(path);
    }
}

方法三:
用图片去实现阴影边框,当然这要依赖于美工了。

相关推荐
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页