关于qmenu圆角的样式

本文介绍了如何使用QSS为QMenu添加圆角效果,并通过修改样式表实现不同状态的菜单项样式。在过程中,作者发现设置圆角并不会限制QMenu的整体大小,解决方法是将背景设为透明。最后,文章以一个实际例子展示了圆角菜单在不同背景下的显示效果,探讨了圆角在界面设计中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

踏过一个又一个的坑。

圆角

最近某知名手机品牌logo修了修圆角,费用200w。。。

圆角前途一片光明,最近就看看qmenu的圆角。

qss

那肯定就是改改控件的stylesheet了,找找资料看看关于stylesheet的圆角配置以及其他的,熟悉了某些属性,配好就OK啦。

最终就配成酱紫:

   QString qss = "QMenu{    background-color: rgb(255, 255, 255);\
                            border: 2px solid #2c9dfc; \
                            border-radius: 10px; }"
                "QMenu::item {  background-color: transparent; \
                                border-radius: 5px; \
                                padding:8px 25px; \
                                margin:2px 2px;  }"
                "QMenu::item:selected { background-color: #2c9dfc;}";

其中前缀就是区分项目各自的样式了,QMenu就是整体,QMenu::item就是菜单上的每一项,QMenu::item:selected就是鼠标聚焦每一项时的样式设置了。

background-color背景颜色;

border设置边框,后续跟着的是边框宽2px, solid实线, 颜色;

border-radius就是设置圆角大小了;

接下来的Item样式主要是内外边距的理解,那么先把颜色改改,把距离改大可以明显一点:

"QMenu::item {  background-color: red; \
                                border-radius: 5px; \
                                padding: 20px 10px; \
                                margin:40px 20px;  }"

在这里插入图片描述

先把每一项的item渲染成红色,所以红色的是item的大小,蓝色边框的白色区域则是整个qmenu的大小;

margin:简称外边距,可以看到是item的外边框与qmenu的边框的距离和item之间的外边框的距离(唉绕来绕去其实就是外边外边,不理红色里边,把红色当成一个整体,这个红色外边的距离),如果写一个参数,则长和宽都是这个距离,如果写两个参数,则第一个是上和下的距离,第二个是左和右;

padding:简称内边距,这时就不管外边了,只看红色里边,里边内容(这里是文本)和边框的距离。

至于item:select,就设一下背景颜色就好了;

圆角背景

再刚刚的设置里,qmenu背景是白色的,而mainwindow背景也是白色的,所以看不出有一个大问题:设置圆角并不会限制qmenu的整体大小。

qmenu还是一个矩形,所以当背景弄成黑色时,就可以看到边角的白色背景:
在这里插入图片描述
所以得把qmenu的背景透明才行:

pop_menu->setAttribute(Qt::WA_TranslucentBackground);

准备暴富

有什么圆角活请call我。谢谢。
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值