#define SHADOW_WIDTH 8 //边框阴影宽度
/*
构造里写
setWindowFlags(windowFlags() | Qt::FramelessWindowHint /*| Qt::WindowStaysOnTopHint*/ |
Qt::Popup | Qt::Tool);
setAttribute(Qt::WA_TranslucentBackground);
*/
void DrawShadow()
{
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing, true);
painter.fillRect(QRect(SHADOW_WIDTH, SHADOW_WIDTH, this->width() - 2 * SHADOW_WIDTH, this->height() - 2 * SHADOW_WIDTH), QBrush(Qt::white));
QColor color(102, 102, 102, 50);
for (int i = 0; i < SHADOW_WIDTH; i++)
{
int nAlpha = 100 - sqrt(i) * 50;
if (nAlpha < 0)
break;
color.setAlpha(nAlpha);
painter.setPen(color);
//圆角阴影边框;
painter.drawRoundedRect(SHADOW_WIDTH - i, SHADOW_WIDTH - i, this->width() - (SHADOW_WIDTH - i) * 2, this->height() - (SHADOW_WIDTH - i) * 2, 3, 3);
}
}
阴影效果如下图