首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Qt样式表.褪色、2D渐变和CSS类

Qt样式表.褪色、2D渐变和CSS类
EN

Stack Overflow用户
提问于 2010-09-22 23:48:51
回答 3查看 11.2K关注 0票数 3

我对Qt的样式表功能有一些疑问。它真的很棒,但它的功能还没有出现太长时间,是吗?不过,这是迄今为止最简单的设计我的GUI的方式。

  1. 可以在样式表中添加褪色吗?每当鼠标悬停在某个小部件上时,我不希望它突然改变背景色,只需在200 in或什么时候淡入新颜色即可。有一种很好的方法吗,还是必须用代码来实现呢?
  2. 我可以有一个2D梯度吗?我现在知道如何使用一维渐变,你可以在一个轴上逐渐改变颜色(通常是水平的或垂直的)。我想在上面加上第二个梯度,例如,a有一个低的alpha值。因此,如果您的渐变从绿色(顶部)到红色(底部),我也希望它从透明(左)转到白色(右)。
  3. Qt有用于类型(例如QPushButton)和ID(例如#mywidgetname)的CSS选择器,但我还没有找到选择或设置类的方法。例如,我有许多QFrames,我想在某个子集中添加一种特定的样式。我是否应该将我的帧命名为相同的(相同的ID)?听起来很糟糕。但是选择他们的类型(QFrame)也是不对的.

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-09-23 09:53:18

据我所知,

  1. 没有使用CSS。然而,Qt使用不同的技术(使用动画框架)有几个不错的演示,例如,请参见演示/示例浏览器。
  2. 通过使用端点的相对坐标使用以下构造,您可能可以在#2中实现您想要的结果:

Q线性梯度(差:pad,x1:0,y1:0,x2:1,y2:0.273,停止:0 rgba(0,0,0,255),停止:1 rgba(255,255,255,255))

Qt Designer为渐变(以及一般的CSS )提供了一个很好的编辑器,您可能希望使用它并查看它的结果,并将其用于inspiration.

  • Not,非常确定如何最好地解决这个问题,但是您可以将多个匹配放在相同的规则之前,这样您就可以拥有:

QFrame#frame1,QFrame#frame2 {背景颜色:蓝色;}

票数 9
EN

Stack Overflow用户

发布于 2016-05-18 02:02:22

我知道这是一个很老的问题,但我最近也遇到了一个类似的问题。

不管怎样,为了“3”我发现您可以在qss中使用“属性选择器”,只需在相关的小部件上设置属性值。

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

代码语言:javascript
运行
复制
widget1->setProperty( "StyleClass", "MyCustomLAF" );
widget2->setProperty( "StyleClass", "MyCustomLAF" );

然后在qss中:

代码语言:javascript
运行
复制
QWidget[StyleClass="MyCustomLAF"] { color : purple ; }

然后,任何将“QWidget”属性设置为"MyCustomLAF“的StyleClass(或派生类)实例都会应用颜色:紫样式。如果下面的解释有点混乱或技术上不正确,请原谅我,但我暗示属性"StyleClass“是Qt所称的”动态属性“,它(用我的话来说)是指在运行时添加到QObject实例中的属性,而没有使用Q_PROPERTY宏在”元内容“中注册。

票数 1
EN

Stack Overflow用户

发布于 2010-09-23 14:24:50

此外,您还可以为特定的父级选择所有QFrames。

#ParentName > QFrame将选择#ParentName的所有子级QFrames

#ParentName QFrame将选择#ParentName中包含的所有QFrames及其子级

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

https://stackoverflow.com/questions/3774459

复制
相关文章

相似问题

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