custed谁做的网站,交河网站建设,易推广,wordpress图片生成插件下载阴影边框很常见#xff0c;诸如360以及其他很多软件都有类似效果#xff0c;了解CSS3的同学们应该都知道box-shadow#xff0c;它就是来设定阴影效果的#xff0c;那么Qt呢#xff1f;看过一些资料#xff0c;说是QSS是基于CSS2的#xff0c;既然如此#xff0c;box-sh…阴影边框很常见诸如360以及其他很多软件都有类似效果了解CSS3的同学们应该都知道box-shadow它就是来设定阴影效果的那么Qt呢看过一些资料说是QSS是基于CSS2的既然如此box-shadow是基于CSS3的那么Qt定然就用不了
搜了一些资料每张图片都做成阴影效果的固然不可能直接舍弃即使可以也不采纳。如果实时的去画图效率太低最后选择了拼图的方式 左上角、左下角、右上角、右下角、上、下、左、右这几个方向都绘制对应的图即可
#include shadow_widget.hShadowWidget::ShadowWidget(QWidget *parent): QDialog(parent)
{setWindowFlags(Qt::FramelessWindowHint | Qt::Dialog);setAttribute(Qt::WA_TranslucentBackground);
}ShadowWidget::~ShadowWidget()
{}void ShadowWidget::paintEvent(QPaintEvent *event)
{QPainter painter(this);this-drawShadow(painter);painter.setPen(Qt::NoPen);painter.setBrush(Qt::white);painter.drawRect(QRect(SHADOW_WIDTH, SHADOW_WIDTH, this-width()-2*SHADOW_WIDTH, this-height()-2*SHADOW_WIDTH));
}void ShadowWidget::drawShadow(QPainter painter)
{//绘制左上角、左下角、右上角、右下角、上、下、左、右边框QList pixmaps;pixmaps.append(QPixmap(:/shadow/shadow_left));pixmaps.append(QPixmap(:/shadow/shadow_right));pixmaps.append(QPixmap(:/shadow/shadow_top));pixmaps.append(QPixmap(:/shadow/shadow_bottom));pixmaps.append(QPixmap(:/shadow/shadow_left_top));pixmaps.append(QPixmap(:/shadow/shadow_right_top));pixmaps.append(QPixmap(:/shadow/shadow_left_bottom));pixmaps.append(QPixmap(:/shadow/shadow_right_bottom));painter.drawPixmap(0, 0, SHADOW_WIDTH, SHADOW_WIDTH, pixmaps[4]);painter.drawPixmap(this-width()-SHADOW_WIDTH, 0, SHADOW_WIDTH, SHADOW_WIDTH, pixmaps[5]);painter.drawPixmap(0,this-height()-SHADOW_WIDTH, SHADOW_WIDTH, SHADOW_WIDTH, pixmaps[6]);painter.drawPixmap(this-width()-SHADOW_WIDTH, this-height()-SHADOW_WIDTH, SHADOW_WIDTH, SHADOW_WIDTH, pixmaps[7]);painter.drawPixmap(0, SHADOW_WIDTH, SHADOW_WIDTH, this-height()-2*SHADOW_WIDTH, pixmaps[0].scaled(SHADOW_WIDTH, this-height()-2*SHADOW_WIDTH));painter.drawPixmap(this-width()-SHADOW_WIDTH, SHADOW_WIDTH, SHADOW_WIDTH, this-height()-2*SHADOW_WIDTH, pixmaps[1].scaled(SHADOW_WIDTH, this-height()- 2*SHADOW_WIDTH));painter.drawPixmap(SHADOW_WIDTH, 0, this-width()-2*SHADOW_WIDTH, SHADOW_WIDTH, pixmaps[2].scaled(this-width()-2*SHADOW_WIDTH, SHADOW_WIDTH));painter.drawPixmap(SHADOW_WIDTH, this-height()-SHADOW_WIDTH, this-width()-2*SHADOW_WIDTH, SHADOW_WIDTH, pixmaps[3].scaled(this-width()-2*SHADOW_WIDTH, SHADOW_WIDTH));
} 写一个公共的类如果窗口要实现阴影效果直接继承就行了SHADOW_WIDTH为阴影边框的像素可以根据自己的需求自由调节 也可使用QGraphicsDropShadowEffect来实现。。。