Qt6:如何禁用QTreeView项的默认背景绘制
Qt 6.5后项背景渲染行为变更的问题与解决思路
问题背景
- Qt 6.5版本之前,只有在指定交替项背景时才会渲染项背景,
QStyledItemDelegate可独立完成背景渲染。 - 提交
qt/qtbase@16e0e7c修改了这一原有逻辑,引发回归问题。 - 补充:另一提交
qt/qtbase@483ae6c同样导致该问题——它将PanelItemViewRow替换为PanelItemViewItem来「正确」渲染背景,理由是前者无法通过QSS设置样式,但官方并未选择在QSS中新增类似::row的语法来实现,这一点令人困惑。
已尝试的方案及局限
- 方案1:通过
QProxyStyle重写PE_PanelItemViewRow,但该方案与应用程序必须兼容的自定义样式表(QSS)冲突。 - 方案2:计划在QSS中设置
::item无背景,再由QStyledItemDelegate负责渲染背景,但目前尚未找到能通过QSS控制该行为的可行实现方式。
效果对比
错误渲染效果

预期渲染效果

内容的提问来源于stack exchange,提问作者kadet
相关产品推荐
相关产品推荐

