如何通过样式表关闭PySide6中QTreeWidget拖拽时的默认高亮效果
如何通过样式表关闭PySide6中QTreeWidget拖拽时的默认高亮效果
嘿,我之前刚好处理过类似的需求,其实用样式表就能轻松搞定,完全不需要折腾自定义 delegate 哦!
QTreeWidget的拖拽相关状态有专门的伪类可以控制,你只需要在样式表里覆盖drop-active和drop-hover这两个伪状态下的默认样式,就能把那些自带的高亮线条、边框都去掉。
具体来说,你可以把原来设置样式表的代码改成这样:
self.setStyleSheet(f""" QTreeWidget::item{{ height: {self.item_height}px 0;}} QTreeWidget::item:drop-active, QTreeWidget::item:drop-hover {{ background: transparent; border: none; outline: none; }} """)
这里的background: transparent会去掉拖拽时的背景高亮,border: none和outline: none则会消除默认的拖拽指示边框/线条。
这样设置之后,你自己实现的OverlayWidget依然会正常显示,完全不会受影响,刚好符合你想要的只展示自定义拖拽覆盖层的需求。如果之后发现还有残留的默认样式,可以继续在这两个伪类里添加对应的样式覆盖,比如调整selection-background-color之类的,不过上面的代码一般就足够解决问题了。
备注:内容来源于stack exchange,提问作者Shobhit Khinvasara
相关产品推荐
相关产品推荐

