默认情况下,QComboBox
下拉列表具有阴影效果。有没有办法去掉它?阴影是由QStyle
控制还是以其他方式控制的?
QComboBox
下拉列表具有阴影效果。有没有办法去掉它?阴影是由QStyle
控制还是以其他方式控制的?阴影效果不是Qt特有的,而是桌面主题特有的。阴影取决于你的桌面环境所使用的样式/主题。如果你的样式/主题为QComboBox定义了阴影,则Qt会非常及时地绘制它。也就是说,你可以寻找一个不绘制阴影的样式。我通过这样做得到了这种效果:
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()
QStyleFactory.keys()
列出的polyester主题。我尝试了时尚的Breeze样式和著名的QtCurve样式,但它们总是绘制阴影。您可以使用GTK+
和Cleanlooks
样式来实现相同的效果。好的,这可能适用于没有阴影效果的主题,但我有它们,因此我最终找到了一个简单的方法使其工作。
self.comboBox.findChild(QFrame).setWindowFlags(Qt.Popup | Qt.NoDropShadowWindowHint)
combobox里面有一个QFrame。它的窗口效果会产生阴影。 我们可以用上述代码来消除这种效果。 注意,不要同时使用两个,否则你将无法打开弹出窗口。
我知道这篇文章已经发布了一段时间,但我还没有找到其他解决方案。