给QT不规则窗口添加阴影
2016-04-29 17:30
1766 查看
在家休息,试着用QT去模仿各类管家软件的界面,做到自绘阴影的时候,蛋疼了。
网上搜到的基本都是一篇文章转来转去,一开始也被思路限制了。
尝试重载paintEvent,然后自己绘制矩形阴影,但是绘制的算法始终觉得有问题,最后发现 QGraphicsDropShadowEffect 这个一个好东西,虽说网上有提到,但是基本都是用它来绘制子控件阴影,所以我好奇,为什么不直接放个QFrame在窗口中间,四边留出阴影位置,主窗口背景设置为透明,Qfram设置阴影效果不就OK了?
说干就干,代码摘要如下:
frame控件里设置样式表
界面编辑状态
与TX管家对比
总体来说效果还算不错吧(主要是用着省事)有更好的方式欢迎讨论
网上搜到的基本都是一篇文章转来转去,一开始也被思路限制了。
尝试重载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管家对比
总体来说效果还算不错吧(主要是用着省事)有更好的方式欢迎讨论
相关文章推荐
- 【Qt】修改用户资料
- qt creator中出现常量中有换行符或乱码问题
- QT 文件管理
- button贴图,点击事件带参数和不带参数连接
- QT中监控全局键盘鼠标事件
- pyqt4 label点击事件,label贴图
- QT应用程序图标的定义
- 纠结半天的QT中文乱码问题
- Qt QThread 这是我 见过解析最全面的一片文章
- pyqt4 基本窗口,窗口布局,设置logo,窗口最大最小化
- Qt 加载百度地图 加载google地图
- QT+OpenGL开发实例:扫描线填充算法
- QT学习之 布局管理
- Qt实战经验
- 基于Qt的轨迹还原之一:introduction
- 使用pyinstaller发布pyqt4程序
- Qt之校验器
- qtp 问题汇总(不断更新)<…
- PyQt5教程——第一个程序(2)
- pyqt给js赋值,获取form表单值