如何使qml视图的特定区域透明

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使qml视图的特定区域透明相关的知识,希望对你有一定的参考价值。

有这样的qml文件:

Item {
    width: 800
    height: 600

    Image {
        id: background
        width: 800
        height: 600
        source: "qrc:/resorces/background.png"
    }

    Rectangle {
        id: transframe
        x: 500
        y: 200
        width: 200
        height: 100
    }

}

如何使transframe的区域透明,然后我可以在背景下看到图形。

答案

OpacityMask正是您所寻找的。

例:

    Rectangle {
        width: 800; height: 600
        color: 'red'

        Image {
            id: background
            width: 800; height: 600
            source: "qrc:/resorces/background.png"
            visible: false
        }
        Item {
            id: transframe
            width: 800; height: 600
            visible: false
            Rectangle {
                x: 500; y: 200; width: 200; height: 100
            }
        }
        OpacityMask { // don't forget to import QtGraphicalEffects
            anchors.fill: background
            source: background
            maskSource: transframe
            invert: true
        }
    }
另一答案
Item { 
    width: 800 
    height: 600
    Image {
        id: background
        width: 800
        height: 600
        source: "qrc:/resorces/background.png"
    }
    Rectangle {
        id: transframe
        x: 500
        y: 200
        width: 200
        height: 100
        color:"transparent"
    }
}

以上是关于如何使qml视图的特定区域透明的主要内容,如果未能解决你的问题,请参考以下文章

如何使当前视图的特定区域成为我的视图?

如何创建不规则形状的qml组件

如何使“真正透明”的窗口成为光标,最好是在纯 QML 上? (Qt 5.7)

如何使 UITableView 成为透明的?

QML 不透明度继承

如何在android中使视图周围的区域变暗?