设置 QMenu::indicator:exclusive:checked 样式表会导致未选中的项目出现不良行为

Far*_*nor 5 qt

我正在尝试设计 aQMenuBar及其子菜单(QMenu对象)的样式。

一切工作正常,直到我尝试设置自定义选中图标。

我有一个子菜单,其中包含两个独占且可检查的QAction。我已将两者添加到 a 中QActionGroup以使它们具有排他性(就像单选按钮一样)。

当我应用样式表而不尝试设置自定义选中图标时,我获得以下结果:

在此输入图像描述

到目前为止,一切正常。但我发现默认的选中图标很丑,我想更改它。
为此,我在样式表中添加了以下描述:

QMenu::indicator:exclusive:checked
{
    image: url(:/images/checked.png);
}
Run Code Online (Sandbox Code Playgroud)

当我应用它时,我现在得到以下结果:

在此输入图像描述

正如您所看到的,未选中的项目指示器沉入背景中(查看“系统主题”项目)。我尝试删除边框,设置一个空(或非空)未经检查的图像(:未经检查的伪状态),...没有任何效果。
我不知道这是否是 Qt 中的一个错误,但如果有人知道如何摆脱这个问题,我将非常感激,我对这个问题几乎发疯了。


编辑:

我已经进行了几次额外的测试,这似乎是一个错误。我在 Qt bug 跟踪器中报告了它。你可以在这里找到它。

我在错误报告附件中提供了最小且完整的示例,如果您想重现该错误,请随时下载它。

小智 1

虽然已经晚了,但将来可以帮助其他人。对于非独占复选框,我遇到了同样的问题,这就是我所做的

QMenu::indicator
{
    width : 14px;
    height : 14px;
    margin : 0px 0px 0px 4px;
    padding : -4px -4px -4px -4px;
}

QMenu::indicator:non-exclusive:unchecked {
    image: url(:/icons/custom/checkbox_unchecked.png);
}

QMenu::indicator:non-exclusive:unchecked:disabled {
    image: url(:/icons/custom/checkbox_unchecked_disabled.png);
}

QMenu::indicator:non-exclusive:checked {
    image: url(:/icons/custom/checkbox_checked.png);
}

QMenu::indicator:non-exclusive:checked:disabled {
    image: url(:/icons/custom/checkbox_checked_disabled.png);
}
Run Code Online (Sandbox Code Playgroud)

结果如下:

在此输入图像描述

负填充使图标能够正确绘制。