Qt 移除QComboBox列表视图阴影效果
默认情况下,Qt 移除QComboBox列表视图阴影效果,qt,qt4,qcombobox,Qt,Qt4,Qcombobox,默认情况下,QComboBoxlistview具有阴影效果。有没有办法把它去掉?阴影是从QStyle控制还是以其他方式控制 阴影效果不是特定于Qt的东西,而是特定于桌面主题的东西。阴影取决于桌面环境使用的样式/主题。如果您的样式/主题为QComboBox定义了阴影,那么Qt将非常迅速地绘制它。也就是说,您可以搜索不绘制阴影的样式。我这样做的效果是: cb = QComboBox() cb.addItems( [ '1', '2', '3', '4', '5', '6' ] ) cb.setSty
QComboBox
listview具有阴影效果。有没有办法把它去掉?阴影是从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()
列出。我尝试了时髦的微风风格和著名的曲线风格,但它们总是画出阴影。您可以使用GTK+
和Cleanlooks
样式实现同样的效果
仅供参考:涤纶是KDE附带的款式之一
以下是上述代码的屏幕截图:
阴影效果不是特定于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()
列出。我尝试了时髦的微风风格和著名的曲线风格,但它们总是画出阴影。您可以使用GTK+
和Cleanlooks
样式实现同样的效果
仅供参考:涤纶是KDE附带的款式之一
以下是上述代码的屏幕截图:
好吧,这可能适用于那些没有阴影效果的主题,但我有阴影效果,所以我终于找到了一个简单的方法来实现它
self.comboBox.findChild(QFrame).setWindowFlags(Qt.Popup | Qt.NoDropShadowWindowHint)
组合框内部有一个QFrame。它的窗口效果产生阴影。
我们可以用前面提到的一行来消除这种影响。
小心,不要把两者都放进去,否则你不会打开弹出窗口
我知道这篇文章发表已经有一段时间了,但我还没有找到任何其他解决方案。好的,这可能适用于那些没有阴影效果的主题,但我有阴影效果的人,所以我终于找到了一个简单的方法让它工作
self.comboBox.findChild(QFrame).setWindowFlags(Qt.Popup | Qt.NoDropShadowWindowHint)
组合框内部有一个QFrame。它的窗口效果产生阴影。
我们可以用前面提到的一行来消除这种影响。
小心,不要把两者都放进去,否则你不会打开弹出窗口
我知道这篇文章发表已经有一段时间了,但我还没有找到任何其他的解决办法。谢谢马库斯,让我试试看