QComboBox 的弹出列表如果非常长的话,会在上下两端加一个箭头来表示还有内容,但是因为没有对应的 ObjectName 这两个箭头的风格很不好调整,需要根据它的 ClassName 获取到对象之后,采用事件监听的方式捕获它的绘图方法。以 QComboBox 为例,可以采用这种方式去画Qt控件中所有的子面板,子对象,方便个性化修改样式。
效果图
方法
主要思想是先要得到子面板的类名,这个我是从Qt的源代码中找到的,QComboBox上下箭头的类名是QComboBoxPrivateScroller,得到类名之后,使用findChildren方法找出所有子对象,然后通过Qt自己的“反射”机制metaObject来对比类名,就可以找到对象了。