我试图为按下的QToolButton设置不同的视觉样式,具体取决于它是否显示菜单。
在我的代码中,具有菜单的工具按钮将其popupMode属性设置为QToolButton::InstantPopup (值2),而没有关联菜单的按钮保留默认值(QToolButton::DelayedPopup,值0)。
我试图以不同的方式使用这种属性,比如选择器,但是只有最后一个(QToolButton[popupMode="2"])起作用了:
/* Not working */
QToolButton[popupMode=InstantPopup]:pressed,
QToolButton[popupMode="InstantPopup"]:pressed,
QToolButton[popupMode="QToolButton::InstantPopup"]:pressed,
QToolButton[popupMode="QToolButton--InstantPopup"]:pressed,
QToolButton[qproperty-popupMode=InstantPopup]:pressed,
QToolButton[qproperty-popupMode="InstantPopup"]:pressed,
QToolButton[qproperty-popupMode="QToolButton::InstantPopup"]:pressed,
QToolButton[qproperty-popupMode="QToolButton--InstantPopup"]:pressed,
QToolButton[qproperty-popupMode="2"]:pressed
{
background-color: blue;
}
/* Working */
QToolButton[popupMode="2"]:pressed,
{
background-color: red;
}(这是选项的汇编,我分别对它们进行了测试)。
文档提到,如果枚举是使用Q_ENUM声明的(就像ToolButtonPopupMode那样),那么应该通过名称而不是值来引用枚举,但是,正如上面所看到的,选择器似乎不是这样的。
问题:是否可以在样式表中使用这种枚举的名称作为选择器,而不是使用枚举的值?
注意:我理解其他选项,如具有更强表现力的、与Qt无关的值的自定义属性,也可以完成这项工作。我很好奇在描述的方式中使用枚举的可能性。
发布于 2021-08-25 17:29:56
QToolButton[popupMode=InstantPopup]:pressed是正确的。
setProperty(<property_name>, QVariant::fromValue(<enum_value>))表示枚举类。
setProperty(<property_name>, <enum_value>)为enum.
但是,如果希望样式动态更改,则需要重新加载样式。阅读关于QStyle::unpolish和QStyle::polish的文章。
https://stackoverflow.com/questions/56540367
复制相似问题