如何禁用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
相关产品推荐
相关产品推荐

