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);
效果
更多菜单样式的优化