在做项目的时候,为了美化界面,我们通常需要设置控件具有阴影效果,具体怎么做呢?
方法一:使用QGraphicsDropShadowEffect
this->setWindowFlags(Qt::FramelessWindowHint); QGraphicsDropShadowEffect *effect = new QGraphicsDropShadowEffect; effect->setBlurRadius(8); // 阴影圆角的大小 effect->setColor(Qt::gray); //阴影的颜色 effect->setOffset(5,5); //阴影的偏移量 ui->centralWidget->setGraphicsEffect(effect); //给那个控件设置阴影,这里需要注意的是所有此控件的子控件,也都继承这个阴影。
方法二:重写paintEvent 函数
void MainWindow::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); } }使用此方法,需要添加下面代码,保证不被绘制上的部分透明。
setAttribute(Qt::WA_TranslucentBackground)方法三:使用带有阴影效果的图片。