You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过样式表关闭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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 03:19:40