QMenubar设置背景颜色

时间:2024-10-14 22:40:07

1、知道QMenu包含item,indicator,separator,right-arrow,scroller,tearoff,相对来说属于子控件比较多的控件了,其中item,indicator,separator,right-arrow是较为为常见的子控件。为了确定子控件的相对位置关系,我们可以通过对子控件设置不同的背景色和边框来进行查看。效果如图所示。

QMenubar设置背景颜色

2、QMenu的边框阴影我们可以通过设置背景图片来实现。但在设置过程中,我发现QMenu的border-width属性存在bug。下图是在设置了以下QSS的效果

QMenubar设置背景颜色

3、位图

QMenubar设置背景颜色

4、QMe艘绒庳焰nu默认是会根据条目的内容动态调整自身的显示大小的,然而在实际中当我在QSS中调整了文字的字体大小后,QMenu并没有调整为合适的大小,导致文字显示不全。这个问题困扰了我很久,后来在和另一个人讨论这个问题时突然想到,是否可能是在QMenu根据内容确定大小时QSS尚未生效。由于QSS实际上是通过QStyle来实现具体效果的,而QStyle则是通过调用QStyle::polish方法来对控件样式做初始化。在这个方法的文档中有这样一段说明:

QMenubar设置背景颜色

5、QMenu其实是一个独立的顶层窗口,因此其位置是相对于整个桌面的,而不是相对于程序主窗口。在Qt的文档中有以下说明

QMenubar设置背景颜色

6、在计算QMenu的弹出位置时我们可能需要使用到QMenu的窗口大小属性,然而文档中提到了

QMenubar设置背景颜色
© 手抄报圈