首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用enumed属性的Qt样式表选择器

使用enumed属性的Qt样式表选择器
EN

Stack Overflow用户
提问于 2019-06-11 09:18:56
回答 1查看 728关注 0票数 4

我试图为按下的QToolButton设置不同的视觉样式,具体取决于它是否显示菜单。

在我的代码中,具有菜单的工具按钮将其popupMode属性设置为QToolButton::InstantPopup (值2),而没有关联菜单的按钮保留默认值(QToolButton::DelayedPopup,值0)。

我试图以不同的方式使用这种属性,比如选择器,但是只有最后一个(QToolButton[popupMode="2"])起作用了:

代码语言:javascript
复制
/* 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无关的值的自定义属性,也可以完成这项工作。我很好奇在描述的方式中使用枚举的可能性。

EN

回答 1

Stack Overflow用户

发布于 2021-08-25 17:29:56

QToolButton[popupMode=InstantPopup]:pressed是正确的。

setProperty(<property_name>, QVariant::fromValue(<enum_value>))表示枚举类。

setProperty(<property_name>, <enum_value>)为enum.

但是,如果希望样式动态更改,则需要重新加载样式。阅读关于QStyle::unpolishQStyle::polish的文章。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56540367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档