我需要有一个复选框,例如选中和未选中状态使用自定义图形的控件。我已经查看了QToolButton和QCheckBox以及QIcon的所有文档,但找不到任何可以满足我想要的组合。
我只想在未选中状态下使用一个图标(实际上是 pixmap),而在选中状态下使用另一个图标。
这感觉应该很容易,但解决方案(缺少自定义控件)让我无法找到。
我也尝试过使用样式表,并且QToolButton:checked
使用background-image
种工作,但我无法获得正确的布局 - 它不像图标那样定位/大小。
:指标子项。 下面的代码对我来说效果很好...
QCheckBox::indicator {
width: 18px;
height: 18px;
}
QCheckBox::indicator:checked
{
image: url(.../Checkbox_checked_normal.png);
}
QCheckBox::indicator:unchecked
{
image: url(.../Checkbox_unchecked_normal.png);
}
QCheckBox::indicator:checked:hover
{
image: url(.../Checkbox_checked_hovered.png);
}
QCheckBox::indicator:unchecked:hover
{
image: url(.../Checkbox_unchecked_hovered.png);
}
QCheckBox::indicator:checked:pressed
{
image: url(.../Checkbox_checked_pressed.png);
}
QCheckBox::indicator:unchecked:pressed
{
image: url(.../Checkbox_unchecked_pressed.png);
}
QCheckBox::indicator:checked:disabled
{
image: url(.../Checkbox_checked_disabled.png);
}
QCheckBox::indicator:unchecked:disabled
{
image: url(.../Checkbox_unchecked_disabled.png);
}
这必须作为样式表输入。通过设计编辑器执行此操作,方法是右键单击复选框并选择"更改样式表..."。
您还可以包含并使用您的图标作为资源:
QCheckBox::indicator:checked {image: url(:/circle-green.png);}
QCheckBox::indicator:unchecked {image: url(:/circle-red.png);}