阴影窗口的实现方法一般有三种,
方法一是:在窗口的构造函数中设置窗口的属性为:
setAttribute(Qt::WA_TranslucentBackground);
从而保证窗口不被绘制的部分透明化。接着重写绘制函数paintEvent(),
其代码示例如下:
void QT_Test::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);
}