QMenu直接在菜单的样式表中写圆角是不会生效的。
testMenu->setStyleSheet("QMenu {border:1px solid rgba(6, 44, 61, 1);background:#223E5B;padding:4px;color:#fff;font-size:14px;border-radius:8px;}"
"QMenu::item {background: transparent;border:none;padding-left:34px;max-width:86px;max-height:34px;min-width:86px;min-height:34px;border-radius:6px;}"
"QMenu::item:selected {background:rgba(85, 131, 170, 1);}"
"QMenu::item:pressed {background:rgba(59, 107, 151, 1);}");

可以看到边框虽然有圆角,但是四角的底并不是透明的。
加上如下设置后可以去除四个角落。
testMenu->setWindowFlag(Qt::FramelessWindowHint);
testMenu->setAttribute(Qt::WA_TranslucentBackground);
//在windows下,自带的阴影效果仍然是直角,还需设置去除阴影效果
testMenu->setWindowFlag(Qt::NoDropShadowWindowHint);
效果

更多菜单样式的优化
本文介绍如何为QMenu设置圆角并实现透明背景效果,通过设置窗口标志和属性去除阴影及直角,同时提供了完整的样式表代码。
426

被折叠的 条评论
为什么被折叠?



