QML SwipeView具有不透明的背景。我怎样才能让它透明?

时间:2017-04-06 22:58:33

标签: qt colors background qml transparency

QML 中,我使用SwipeView实现了一个简单的应用程序:

import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3
import QtQuick.Window 2.2

Window {
    visible: true
    Rectangle{
        id: bg
        anchors.fill: parent
        color: "red"
    }

    SwipeView {
        id: swipeView
        anchors.left: parent.left
        anchors.right: parent.right
        anchors.top: parent.top
        anchors.bottom: tabBar.top
        currentIndex: tabBar.currentIndex

       Page{
        // Empty
       }

        Page{
            Rectangle{
                anchors.fill: parent
                color:"purple"
            }
        }
    }

    TabBar {
        id: tabBar
        width: parent.width;
        height: 30;
        anchors.bottom: parent.bottom
        currentIndex: swipeView.currentIndex
        TabButton {
            text: qsTr("Empty")
        }
        TabButton {
            text: qsTr("Purple")
        }
    }
}

如果我移除SwipeView 红色背景Rectangle节目,但只要SwipeView存在,就会白色紫色,具体取决于显示的页面。

选择了紫色页面:

With purple page selected

选择空白页:

With empty page selected

使用swipeview和tabbar注释掉:

With swipeview and tabbar commented out

那么,如何让红色背景透过(即使SwipeView透明)?

1 个答案:

答案 0 :(得分:1)

默认情况下,

SwipeView是透明的。 Page实际上并非“空”。因为它继承了Control,所以它具有背景属性。默认情况下,Page将Rectangle设置为背景。这就是为什么你看到空白标签的白色。 Page.qml Sourcecode

所以你可以这样做:

   Page { background: null }

或:

    Page {
        background: Rectangle{                
            color:"transparent"
        }
    }