By default, the QComboBox
listview has shadow effect. Is there a way to remove it? Is the shadow controlled from QStyle
or in some other way?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
The shadow effect is not a Qt specific thing, its a Desktop theme specific thing. The shadow depends on the style/theme your desktop environment is using. If your style/theme defines shadows for QComboBox then Qt will very promptly draw it. That said, you may search for a style that does not draw a shadow. I got the effect by doing so:
cb = QComboBox()
cb.addItems( [ '1', '2', '3', '4', '5', '6' ] )
cb.setStyle( QStyleFactory.create( "Polyester" ) )
cb.setStyleSheet( "QComboBox QAbstractItemView { border: 1 px solid gray; }" )
cb.show()
For this, you must have a compatible theme like polyester listed by QStyleFactory.keys()
. I tried with the snazzy Breeze style and the famous QtCurve style, but they draws a shadow always. You may achieve the same using GTK+
and the Cleanlooks
styles.
FYI: Polyester is one of the styles that comes with KDE.
Here is a screenshot of the above code: