[Bug] 设置页滚轮被下拉框/数字框吃掉,翻页时容易误改配置
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 1/5
- Tempo stimato
- Meno di un'ora
- Idoneità per principianti
- 90/100
Direzione di ricerca
Tutto avviene in SettingsDialog.add_section() in tool/gui/settings_dialog.py, la classe base condivisa su cui si basa ogni pagina delle impostazioni del kernel. Inizia leggendo quel metodo, poi al suo interno percorri con findChildren i figli della sezione caricata di tipo QComboBox, QSpinBox e QDoubleSpinBox e imposta Qt.StrongFocus su ciascuno prima di aggiungere il widget a content_layout. Fatto significa aprire una pagina delle impostazioni del kernel (ad es. l'icona a ingranaggio su un kernel qualsiasi), scorrere con il puntatore sopra un menu a discesa/spin box e vedere la pagina scorrere invece del valore che cambia, mentre un controllo cliccato risponde ancora alla rotella.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
问题描述
内核设置页(tool/gui/settings_dialog.py 的 SettingsDialog 基类,所有内核共用)用滚轮往下翻页时,鼠标只要经过下拉框/数字框,滚轮就被控件吃掉——变成修改选项值,页面不动。
设置页通常有多个下拉框(截图方式、后台模式、设备选择等),滚动时很容易误改配置,也很难翻到页面下半部分。
复现步骤
- 打开任意内核的设置页(例如货币战争 / 神赐珍宝 → 齿轮「设置」);
- 鼠标移到面板中部,滚轮向下滚动;
- 当指针经过任意
QComboBox(如「截图方式」「后台模式」)或QSpinBox时,滚轮不再滚动页面,而是改变该控件的选项/数值; - 继续滚动才能跳过该控件,翻页体验被打断,且有误改配置的风险。
预期行为
滚轮应当滚动设置页;只有当控件已经获得焦点(被点击过)时,滚轮才修改它的值。
截图或录屏
未提供(现象可稳定复现,属 Qt 控件默认行为)。
相关日志
无日志输出(纯 UI 交互问题)。
完整日志(文件上传)
无。
操作系统
Windows 11 家庭版 中文版(10.0.26300,x64)
Python 版本
3.12.10(uv 0.13.6)+ PyQt5 5.15.11
项目版本 / Commit
master @ 488d822
原因与建议修法(供参考)
原因:QComboBox / QSpinBox 默认 focusPolicy = Qt.WheelFocus,鼠标悬停在上方时滚轮事件直接进控件,QScrollArea 收不到。
建议:在 SettingsDialog.add_section() 里统一把这两类控件的焦点策略改成 StrongFocus(点进控件后滚轮才生效):
from PyQt5.QtWidgets import QComboBox, QDoubleSpinBox, QSpinBox
def add_section(self, path):
section = uic.loadUi(str(path))
for widget in section.findChildren((QComboBox, QSpinBox, QDoubleSpinBox)):
widget.setFocusPolicy(Qt.StrongFocus)
self.content_layout.addWidget(section)
return section
同一处也能覆盖各内核 ui/*.ui 里的所有下拉/数字框,不用逐个改 .ui。
另:如果希望「悬停也能滚轮改值、但不抢页面滚动」,则需要给控件装事件过滤器,只在
Qt.WheelFocus且已聚焦时接受 wheel 事件——不过推荐的仍是上面的StrongFocus,行为最符合常见桌面应用习惯。
- Lingua principale
- Python
- Stelle
- 568
- Fork
- 10
- Merge medio
- 10h 7m
- PR unite (30g)
- 108
Preparare l'ambiente
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di syfoud/Simulated_Scepter
-
Bug Fix / Bug 修复
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
syfoud/Simulated_Scepter#430 ·
I maintainer di solito rispondono entro 1 giorno
-
[Feature] 奇物选择添加优先级Apertagood first issue / 新手友好议题
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
syfoud/Simulated_Scepter#174 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
[Question] 交易区经常暂离重进循环该如何解决Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
syfoud/Simulated_Scepter#396 ·
I maintainer di solito rispondono entro 1 giorno
-
[Feature] 记忆GUI位置ApertaGood first issue / 新手友好议题
Difficoltà 3/5 1-2 giorni Idoneità per principianti 47/100
syfoud/Simulated_Scepter#303 ·
I maintainer di solito rispondono entro 1 giorno
-
[Feature] 关于增加debug识别框的建议Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
syfoud/Simulated_Scepter#302 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di syfoud/Simulated_Scepter
Issue simili
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
Sienna-Platform/SiennaSchemas#130 ·
I maintainer di solito rispondono entro 3 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
firedrakeproject/Irksome#293 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
ida-arbeitszeit/workers-control#1578 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
aws-samples/sample-per-model-bedrock#898 ·
I maintainer di solito rispondono entro 1 giorno