具有绝对梯度和分块梯度的 QSlider

Posted

技术标签:

【中文标题】具有绝对梯度和分块梯度的 QSlider【英文标题】:QSlider with absolute and chunked gradient 【发布时间】:2016-11-20 02:22:41 【问题描述】:

我正在尝试在滑块的 QSlider::add-page 部分中制作一个具有绝对渐变和分块样式的 QSlider。

以下样式表代码:

QSlider::groove:vertical 
    background: #021017;
    BORDER-radius: 5px;
    position: absolute;
    left: 10px;
    right: 10px;

QSlider::handle:vertical 
    height: 10px;
    background: #0b1707;
    border: 1px solid #46992b;
    margin: 0px -10px;
    /* expand outside the groove */

    border-radius: 5px;

QSlider::add-page:vertical 
    BORDER-radius: 5px;
    border: 1px solid #0e566d;
    background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #46992b, stop: 0.5 #0e566d, stop: 1 #d16a4b);

QSlider::sub-page:vertical 
    background: #021017;
    BORDER-radius: 5px;
    border: 1px solid #0e566d;
    margin: 0px 1px 0px 1px;

QSlider::handle:vertical:hover 
    background-color: #46992b;

我得到以下输出:

但是当我移动手柄时,渐变会根据滑块底部到手柄的高度而变化。我希望渐变基于从滑块底部到顶部的高度。这意味着改变手柄位置不会改变它的外观。

还有可能有一个分块的渐变——比如这个进度条?

【问题讨论】:

为什么边框要大写?与其余部分保持一致时没有不同的效果。 哈哈。大写锁定...和懒惰...没有充分的理由。 【参考方案1】:

对于第一个问题:是的,有可能。我调整了您提供的样式表(未注释的内容,您会注意到它们):

QSlider::groove:vertical 
    width: 10px;
    /* background: #021017;*/
    background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #46992b, stop: 0.5 #0e566d, stop: 1 #d16a4b);
    border-radius: 5px;
    position: absolute;
    left: 10px;
    right: 10px;

QSlider::handle:vertical 
    height: 10px;
    background: #0b1707;
    border: 1px solid #46992b;
    margin: 0px -10px;
    /* expand outside the groove */

    border-radius: 5px;

QSlider::add-page:vertical 
    border-radius: 5px;
    border: 1px solid #0e566d;
    /*background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #46992b, stop: 0.5 #0e566d, stop: 1 #d16a4b);*/

QSlider::sub-page:vertical 
    background: #021017;
    border-radius: 5px;
    border: 1px solid #0e566d;
    margin: 0px 1px 0px 1px;

QSlider::handle:vertical:hover 
    background-color: #46992b;

总结: 使用渐变为groove 设置样式,并跳过add-page 背景颜色。


对于第二个问题,::chunk 不起作用,所以 我认为它不适用于 默认 QSlider。随意实现自己的类,它可以处理块。

【讨论】:

以上是关于具有绝对梯度和分块梯度的 QSlider的主要内容,如果未能解决你的问题,请参考以下文章

openCV:图像的梯度

基于CDT计算全球表面气压变化梯度

机器学习之梯度下降法

线性回归上的梯度下降不收敛

如何创建具有一定梯度分布的 HTML 颜色数组?

机器学习:梯度下降