gpt4 book ai didi

QT QML 如何将 LinearGradient 添加到带边框的矩形?

转载 作者:行者123 更新时间:2023-12-01 20:18:15 25 4
gpt4 key购买 nike

我想要一个比矩形的默认垂直渐变更具体的渐变。我尝试添加 LinearGradient 以获得对角线效果,但它覆盖了边框。

考虑这个例子。顶部矩形 可以使用垂直渐变和边框。底部矩形渐变覆盖边框和半径。我尝试了 clipgradient: LinearGradient 但它们也不起作用。

import QtQuick 2.7
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4
import QtGraphicalEffects 1.0

ApplicationWindow
{
visible: true
width: 640
height: 480

Column
{
spacing: 20
width: parent.width
Rectangle
{
width: 200
height: 200

border.width: 4
border.color: "#888"
radius: 10

// adds a vertical gradient to button
gradient: Gradient
{
GradientStop
{
position: 0
color: "#eee"
}
GradientStop
{
position: 1
color: "#ccc"
}
}
}

Rectangle
{
width: 200
height: 200

border.width: 4
border.color: "#888"
radius: 10

// try to add diagonal gradient, but overwrites button border
// also can't do, gradient: LinearGradient ?
LinearGradient
{
anchors.fill: parent
start: Qt.point(0,0)
end: Qt.point(parent.width,parent.height)

gradient: Gradient
{
GradientStop
{
position: 0
color: "#eee"
}
GradientStop
{
position: 1
color: "#ccc"
}
}
}
}
}
}

结果如下:

enter image description here

我明白为什么会产生这样的结果,但是如何将渐变裁剪为具有半径矩形

最佳答案

clip 始终在正在剪辑的 Item 的边界矩形处进行剪辑,并且不关心 alpha 值。

但是LinearGradient还有另一个工具可以实现您想要的:
- source-property .

请参阅此示例:

import QtQuick 2.0
import QtQuick.Window 2.0
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4
import QtGraphicalEffects 1.0
Window {
width: 1024
height: 800
visible: true

Rectangle {
id: rect1
width: 100
height: 100
radius: 20
}

LinearGradient {
anchors.fill: rect1
source: rect1 <-- Here is where you specify its shape.
start: Qt.point(0, 0)
end: Qt.point(300, 300)
gradient: Gradient {
GradientStop { position: 0.0; color: "white" }
GradientStop { position: 1.0; color: "black" }
}
}
}

关于QT QML 如何将 LinearGradient 添加到带边框的矩形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42741789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com