Qt 的线性渐变的类QLinearGradient 学习笔记

        QLinearGradient 是 Qt 中用于创建线性渐变的类,它允许你在控件上应用从一个颜色到另一个颜色的渐变效果。QLinearGradient 的参数用于定义渐变的方向、范围以及颜色变化。下面是 QLinearGradient 的各个主要参数及其详细解释:
1. x1 和 y1
定义:渐变的起始点坐标。
取值范围:0 到 1。
说明:x1 和 y1 定义了渐变起始点相对于渐变区域的坐标。坐标 (0, 0) 表示渐变区域的左上角,(1, 1) 表示右下角。
2. x2 和 y2
定义:渐变的结束点坐标。
取值范围:0 到 1。
说明:x2 和 y2 定义了渐变结束点相对于渐变区域的坐标。坐标 (0, 0) 表示渐变区域的左上角,(1, 1) 表示右下角。

3. stop
定义:渐变的颜色停靠点。
说明:每个 stop 定义了一个颜色及其在渐变中的位置。stop 后面跟的是渐变的位置(一个介于 0 到 1 之间的浮点值),以及对应的颜色值。例如,stop:0 rgba(255, 0, 0, 255) 表示渐变的起始点(0%)颜色为不透明的红色。
4. spread
定义:渐变的扩展方式。
PadSpread:渐变会继续填充到渐变区域的边界之外,超出部分使用边界的颜色。
RepeatSpread:渐变会重复填充,超出部分重复渐变的模式。
ReflectSpread:渐变会反射填充,超出部分呈现渐变的镜像效果。   
 示例1:

QLinearGradient gradient(0, 0, 1, 1);
gradient.setColorAt(0, Qt::red);
gradient.setColorAt(0.5, Qt::green);
gradient.setColorAt(1, Qt::blue);


这段代码创建了一个 QLinearGradient 对象,从渐变区域的左上角 (0, 0) 到右下角 (1, 1)。渐变开始时是红色,中间是绿色,结束时是蓝色。
示例2:
按钮的样式表:
background-color: qlineargradient(spread:pad, x1:1, y1:0, x2:0, y2:1, stop:0 red, stop:1 blue);   

试着创建两个指示灯:
1、在图形界面放置两个QLabel,长宽均设为40
2、分别输入样式表:
QLabel{
    border-radius: 20px;
    border: 2px solid rgb(100, 100, 100);    
    background-color: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 1, stop: 0 #bbffbb, stop: 1 #404040);
}

和:
QLabel{
    border-radius: 20px;
    border: 2px solid rgb(100, 120, 100);    
    background-color: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 1, stop: 0 #ffffff, stop: 0.3 #43ff43, stop: 1 #669066);
}
显示效果:
 

再试一个按钮:QPushButton,输入以下样式表内容:

QPushButton{

border-top: 2px solid #f0f0f0;

border-left: 2px solid #f0f0f0;

border-right: 2px solid #303030;

border-bottom: 2px solid #303030;

background-color: qlineargradient(x1: 1, y1: 0, x2: 1, y2: 1, stop: 0 #b0ddb0, stop: 1 #606060);

}

QPushButton:hover{

border-top: 1px solid #f0f0f0;

border-left: 1px solid #f0f0f0;

border-right: 1px solid #303030;

border-bottom: 1px solid #303030;

background-color: qlineargradient(x1: 1, y1: 0, x2: 1, y2: 1, stop: 0 #c0eec0, stop: 1 #b0b0b0);

}

QPushButton:pressed{

border-top: 2px solid #303030;

border-left: 2px solid #303030;

border-right: 2px solid #f0f0f0;

border-bottom: 2px solid #f0f0f0;

background-color: qlineargradient(x1: 1, y1: 0, x2: 1, y2: 1, stop: 0 #e0e0e0, stop: 0.1 #60ff60, stop: 0.5 #88ff88, stop: 1 #30ff30);

}

 

 

                                     

 

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深蓝海拓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值