【问题标题】:Adding new stylesheet parameters for custom Qt widgets为自定义 Qt 小部件添加新的样式表参数
【发布时间】:2016-07-07 15:48:54
【问题描述】:

我想为我开发的自定义小部件添加样式表选项。我们将 QPushButton 扩展为不同的颜色,并在按下时闪烁。这是通过添加一个新属性来完成的,背景颜色向下。我们在代码中设置了它。但我想使用 Qt 样式表条目来设置它,比如

QFlashingButton
{
    background-color-down: yellow;
    flashing-interval: 5;
}

我可以看到一种方法,使用 stylesheet() 方法读出样式表信息,然后解析它以获得与我的小部件相关的参数并设置它们。但我想知道是否有某种方法可以访问 Qt 自己用于处理样式表的代码。乍一看他们的代码,这似乎是不公开的。

【问题讨论】:

    标签: qt


    【解决方案1】:

    只要你想在样式表中控制的参数是一个QProperty,就可以在样式表中使用语法设置:qproperty-<PROPERTY_NAME>: <PROPERTY_VALUE>

    我不认为属性名称中实际上可以包含破折号,因此假设您的自定义小部件上的 QProperties 实际上是 backgroundColorDown 和 flashingInterval,那么您的样式表将如下所示:

    QFlashingButton
    {
        qproperty-backgroundColorDown: yellow;
        qproperty-flashingInterval: 5;
    }
    

    【讨论】:

    • 是的,这解决了我的问题,谢谢。作为一个相关问题,我后来发现,由于小部件的显示属性最初是由样式表设置的,我不得不使用 setStyleSheet() 用闪烁的颜色覆盖它们,而不是使用 setBackground(),这没有效果。