QML ShaderEffectSource不会刷新儿童的可见性变化

时间:2018-03-19 09:54:03

标签: qt qml

当使用ShaderEffectSource作为另一个尚未显示的qml元素的预览时,当sourceItem的子元素设置为可见时,渲染不会刷新。

在示例中,按下切换按钮,文本不会出现在预览中,直到sourceItem可见。另一方面,将sourceItems子设置为不可见会立即刷新ShaderEffectSource。

小工作示例main.qml:

import QtQuick 2.5
import QtQuick.Extras 1.4

Item {
    id: main
    visible: true
    width: 800
    height: 600
    Rectangle {
        id: preview
        width: 533
        height: 400
        // Preview render
        ShaderEffectSource {
            anchors.fill: parent
            anchors.margins: 25
            sourceItem: liveView
        }
        // Click on preview
        MouseArea {
            anchors.fill: parent
            onClicked: {
                liveView.visible = true;
                preview.visible = false;
            }
        }
    }
    Rectangle {
        id: liveView
        visible: false
        anchors.fill: parent
        border.width: 2
        border.color: "black"
        Text {
            id: liveText
            visible: false
            color: "black"
            text: "Live"
            width: parent.width
            font.pointSize: 60
        }
        MouseArea {
            width: parent.width
            height: parent.height
            onClicked: {
                liveView.visible = false;
                preview.visible = true;
            }
        }
    }
    ToggleButton {
        anchors.bottom: parent.bottom
        anchors.right: parent.right
        text: "liveText visible"
        onClicked: {liveText.visible = checked;}
    }
}

我是在https://bugreports.qt.io/browse/QTBUG-66301下提交的,但我希望有人可以协助我制定解决方法,或者告诉我是否完全错误地使用它。

编辑1:第一个解决方法是永远不要使sourceItem不可见,并用低z隐藏在其他对象后面。

0 个答案:

没有答案