您的位置:首页 > 编程语言 > Qt开发

给QT不规则窗口添加阴影

2016-04-29 17:30 1766 查看
在家休息,试着用QT去模仿各类管家软件的界面,做到自绘阴影的时候,蛋疼了。

网上搜到的基本都是一篇文章转来转去,一开始也被思路限制了。

尝试重载paintEvent,然后自己绘制矩形阴影,但是绘制的算法始终觉得有问题,最后发现 QGraphicsDropShadowEffect 这个一个好东西,虽说网上有提到,但是基本都是用它来绘制子控件阴影,所以我好奇,为什么不直接放个QFrame在窗口中间,四边留出阴影位置,主窗口背景设置为透明,Qfram设置阴影效果不就OK了?

说干就干,代码摘要如下:

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);

setWindowFlags(Qt::FramelessWindowHint);
setAttribute(Qt::WA_TranslucentBackground);

auto shadowEffect = new QGraphicsDropShadowEffect(this);
shadowEffect->setOffset(0,0);
shadowEffect->setColor(Qt::black);
shadowEffect->setBlurRadius(12);
ui->frmBg->setGraphicsEffect(shadowEffect);
}

frame控件里设置样式表

QFrame {
background-image: url(:/form/blue.jpg);
}

界面编辑状态



与TX管家对比



总体来说效果还算不错吧(主要是用着省事)有更好的方式欢迎讨论
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: