Qt样式表; 褪色,2D渐变和CSS类

Tac*_*lff 1 qt stylesheet qt-creator qt-designer qtstylesheets

我对Qt的样式表功能有一些疑问.这真的很棒,但感觉这个功能已经存在太久了,是吗?这是迄今为止设计GUI的最简单方法.

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

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

  3. Qt有类型(例如QPushButton)和ID(例如#mywidgetname)的CSS选择器,但我没有找到选择或设置类的方法.我有很多QFrame例如,对于某个子集我想添加一个特定的样式.我应该将我的帧命名为相同的ID(相同的ID)吗?听起来不错.但选择他们的类型(QFrame)也不对......

谢谢!

Ivo*_*Ivo 7

  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))
    
    Run Code Online (Sandbox Code Playgroud)

    Qt Designer有一个很好的渐变编辑器(一般用于CSS),你可能想玩这个并看看它是什么,并用它来获取灵感.

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

    QFrame#frame1, QFrame#frame2 { background-color: blue; }
    
    Run Code Online (Sandbox Code Playgroud)