Qt中如何给窗体绘制阴影,重写绘图事件

给窗体绘制阴影
    void paintEvent(QPaintEvent *event)
    {
        //绘制阴影
        QPainterPath path;
        path.setFillRule(Qt::WindingFill);
        path.addRect(10 10 this->width() - 10* 2, this->height() - 10* 2);

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

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

你可能感兴趣的:(界面,Qt,C++,qt)