C++ Qt复选框/工具按钮,带有自定义/不同的复选/未选中图标
我需要有一个类似复选框的控件,其中选中和未选中的状态使用自定义图形。我已经查看了QToolButton和QCheckBox以及QIcon的所有文档,但找不到任何符合我要求的组合 我只想在未选中状态下使用一个图标(实际上是pixmap),在选中状态下使用另一个图标 这感觉应该很容易,但解决方案(缺少自定义控件)让我难以理解C++ Qt复选框/工具按钮,带有自定义/不同的复选/未选中图标,c++,qt,C++,Qt,我需要有一个类似复选框的控件,其中选中和未选中的状态使用自定义图形。我已经查看了QToolButton和QCheckBox以及QIcon的所有文档,但找不到任何符合我要求的组合 我只想在未选中状态下使用一个图标(实际上是pixmap),在选中状态下使用另一个图标 这感觉应该很容易,但解决方案(缺少自定义控件)让我难以理解 我也尝试过使用样式表,并且用背景图像选中了QToolButton:,但我无法获得正确的布局--它的位置/大小与图标不同。使用::指示器子项。下面的代码非常适合我 QChec
我也尝试过使用样式表,并且用背景图像选中了
QToolButton:
,但我无法获得正确的布局--它的位置/大小与图标不同。使用::指示器子项。下面的代码非常适合我
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);
}
这必须作为样式表输入。通过设计编辑器右键单击复选框并选择“更改样式表…”来完成此操作。谢谢您的帮助! 为了在Maya中使用,我使用了:
from PySide2 import QtWidgets
import os
ICON = os.path.join(os.path.dirname(__file__), '_icons//').replace("\\", "//")
ui.setStyleSheet("""
QGroupBox::indicator {width: 14px; height: 14px;}
QGroupBox::indicator:checked {image: url(""" + ICON + """arrow_down.png);}
QGroupBox::indicator:Unchecked {image: url(""" + ICON + """arrow_right.png);}
QGroupBox::indicator:checked:hover {image: url(""" + ICON + """arrow_down_hover.png);}
QGroupBox::indicator:Unchecked:hover {image: url(""" + ICON + """arrow_right_hover.png);}
""")
将后斜杠替换为前斜杠非常重要,因为如果路径不以这种方式统一,图像将不会显示。您还可以将图标作为资源包括并使用:
QCheckBox::指示符:选中{image:url(:/circle green.png);}
QCheckBox::指示符:未选中{image:url(:/circle red.png);}
有没有办法使用Qt图标而不是在资源中导入图像?