QMenu自定义阴影效果
此处提供一种简单有效的 QMenu 自定义阴影效果方案。算是抛砖引玉吧,实际应该有更优雅的做法,日后有空研究了再做更新。
m_menu1 = new QMenu();
m_menu1->setWindowFlags(m_menu1->windowFlags() | Qt::NoDropShadowWindowHint | Qt::FramelessWindowHint);
m_menu1->setAttribute(Qt::WA_TranslucentBackground);
/* XXX:
* 通过 QGraphicsDropShadowEffect 为 menu 添加阴影效果,这要求 menu 设置 margin 属性,
* 且 margin 的大小不得小于 blurRadius。
* 在 menu 显示时将会抛出警告 “UpdateLayeredWindowIndirect failed ...”; 这是正常的
*/
QGraphicsDropShadowEffect *shadow = new QGraphicsDropShadowEffect();
shadow->setBlurRadius(8);
shadow->setColor(QColor(0, 0, 0, 50));
shadow->setOffset(0);
m_menu1->setGraphicsEffect(shadow);
!!! 禁止转载 !!! 如果需要你可以添加引用或链接。
理由:我认为由于恣意转载,现在国内的技术博客充斥着大量的重复内容,有些甚至是错误的,这不利于技术探索。

浙公网安备 33010602011771号