踏过一个又一个的坑。
圆角
最近某知名手机品牌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我。谢谢。