DropShadow 的自定义组件

Custom Component for DropShadow

由于 DropShadow 的这些属性没有改变:

radius: 10
samples: 15
color: "black"

在我的使用中,我尝试创建一个名为 Shadow.qml 的自定义组件来设置这些:

anchors.fill: target
source: target

两个属性。在这里:

import QtQuick 2.0
import QtGraphicalEffects 1.0

DropShadow{
    id: root
    /*
    property string target
    anchors.fill: target
    source: target
    */

    //property alias target: root.anchors.fill | root.source

    /*
    property alias fill: root.anchors.fill
    property alias source: root.source
    */

    radius: 10
    samples: 15
    color: "black"
}

在我的使用中,我可以这样使用它:

Shadow{
    anchors.fill: myTarget
    source: myTarget
}

并且有效。问题是我必须在两个地方写 myTarget (即 anchors.fillsource)所以我想把它减少到像这样的一行 Shadow{ target: myTarget }

我已经尝试过对这些作品的 Shadow.qml 和 none 的这 3 个注释掉的每个部分都进行了尝试!

目标不应该是 string 它应该是应该应用 DropShadow 的对象,可以是任何类型的图形 Item

property Item target
anchors.fill: target
source: target

应该可以。
但是你也可以让它填充源代码:

anchors.fill: source

现在,您设置的不是目标,而是源:

Shadow {
    source: Rectangle { ... }
}

如果需要 属性 名称 target,请为源创建一个别名:

DropShadow {
    property alias target: source
    anchors.fill: source
    ...
}

创建别名而不是 真实 属性 应该更有效。