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

如何禁用QListWidget列表选中条目的边框效果

QListWidget选中条目边框消除方案

示例图

你看到的选中状态边框是Qt默认的焦点指示矩形,不属于item的border样式范畴,因此你之前设置的border: transparent不会生效,按以下方案修改即可:


方案1:修改样式表(推荐,不影响键盘交互)

在原有样式基础上补充outline禁用规则,修改后的完整样式如下:

#language_list{
background-color: white;
selection-background-color: transparent;
margin-top: 3px;
margin-bottom: 3px;
border-radius: 5px;
border-bottom: 1px solid #C6C6C6;
padding: 1em;
font: 14px "Roboto";
color: #393939;
outline: none;
}
#language_list::item{
margin-bottom: 1em;
border-bottom: 1px solid #C6C6C6;
outline: none;
}
#language_list::item:hover{
background-color: #E0E0E0;
padding-top:2px;
padding-left:2px;
border-radius: 5px;
border-bottom: 1px solid #AFAFAF;
}
#language_list::item:selected{
text-decoration: none;
background-color: #C3C2C2;
color: white;
padding-top:7px;
padding-left:7px;
padding-bottom: 5px;
border: transparent;
border-radius: 5px;
border-bottom: 1px solid white;
outline: none;
}

修改说明:

  • 给根控件添加outline: none,同时将默认selection-background-color改为transparent,避免默认选中背景和自定义样式叠加
  • 给所有条目统一添加outline: none,禁用默认焦点矩形
  • 选中状态下额外补充outline: none,避免规则优先级不足导致不生效

方案2:代码禁用焦点(无键盘交互需求适用)

如果你的列表不需要支持键盘上下键选择条目,可以直接禁用控件的焦点获取能力,彻底消除焦点矩形:

# PyQt/PySide 示例
self.language_list.setFocusPolicy(Qt.NoFocus)
// Qt C++ 示例
ui->language_list->setFocusPolicy(Qt::NoFocus);

内容的提问来源于stack exchange,提问作者DA DAS

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:36:03