我对QT的样式表功能有一些疑问。真的很棒,但是感觉该功能还没有太久了,真的吗?到目前为止,这是最简单的造型我的GUI的方法。

  1. 是否可以在样式表中添加颜色褪色?每当鼠标徘徊在某个小部件上时,我都不希望它突然更改背景颜色,只需在200ms或其他东西中淡入新颜色。是否有一个很好的方法,或者必须在代码方面完成此操作?

  2. 我可以有2D梯度吗?我知道现在如何使用1D梯度,您可以在一个轴上逐渐更改颜色(通常是水平或垂直)。我想添加一个 第二 最重要的是,其具有较低的alpha值。因此,如果您的梯度从绿色(顶部)到红色(底部),我也希望它从透明(左)变为白色(右)。

  3. QT具有用于类型(例如qpushbutton)和ID(例如#MyWidgetName)的CSS选择器,但我尚未找到选择或设置类的方法。例如,我有许多Qframes,对于某个子集,我想添加一种特定的样式。我应该给我的帧命名全部相同(相同的ID)吗?听起来很糟糕。但是选择其类型(QFrame)也不正确...

谢谢!

有帮助吗?

解决方案

  1. 不使用我知道的CSS。但是,QT使用不同的技术(使用动画框架)具有多个不错的演示,例如,请参见演示/示例浏览器。

  2. 您可以通过使用端点的相对坐标使用以下构造来实现#2中想要的东西:

    qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0.273, stop:0 rgba(0, 0, 0, 255), stop:1 rgba(255, 255, 255, 255))
    

    QT Designer有一位出色的编辑器(以及CSS的一般),您可能想使用它,看看它的内容并将其用于灵感。

  3. 不太确定如何最好地解决这个问题,但是您可以将多个匹配项放在同一规则之前,因此您可以拥有:

    QFrame#frame1, QFrame#frame2 { background-color: blue; }
    

其他提示

我知道这是一个非常古老的问题,但是我最近也有类似的问题。

无论如何,对于“ 3”我发现您可以在QSS中使用“属性选择器”,然后在相关的小部件上设置属性值。

例如,在您的C ++代码中:

widget1->setProperty( "StyleClass", "MyCustomLAF" );
widget2->setProperty( "StyleClass", "MyCustomLAF" );

然后在QSS中:

QWidget[StyleClass="MyCustomLAF"] { color : purple ; }

然后,将设置为“ mycustomlaf”的“ Styleclass”属性的任何Qwidget(或派生类)实例都将具有颜色:应用紫色样式。如果以下解释有点令人困惑或技术不正确,请原谅我在运行时,不使用q_property宏未在“元数据”中注册。

另外,您可以选择特定父母的所有Qframes

#ParentName > QFrame 将选择所有是#ParentName的孩子

#ParentName QFrame 将选择#ParentName中包含的所有Qframes,它的孩子

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top