在Drawer组件上更改父级会导致窗口无响应

时间:2017-10-24 11:36:49

标签: qt qml

我希望Drawer相对于Item,这样就不会隐藏Rectangle。

当我将抽屉组件的父组件更改为项目时,抽屉停止工作,窗口在5-10秒后停止响应。

如果我不对父母进行任何更改,它可以正常工作。除非在抽出抽屉时隐藏矩形。

有谁知道我做错了什么?

Window{
    id: window
    visible: true
    width: 1280
    height: 800

    Row{
        width: parent.width
        height: parent.height

        Rectangle{
            width: 80
            height: parent.height
            z: 2
        }

        Item{
            id: mainView
            height: parent.height
            width: parent.width - 80

            Drawer{
                parent: mainView // <-- causes not responding
                width: parent.width
                height: parent.height
                edge: Qt.LeftEdge
            }
        }
    }
}

1 个答案:

答案 0 :(得分:1)

如果您不想拥有Drawer,那么您使用的是Drawer

有两种解决方案:

  1. 您自己编写的Drawer就是Drawer所希望的。

  2. 您将第2层Window分层,并将抽屉放在第二个窗口中。

  3. //示例:

    Window{
        id: window
        visible: true
        width: 1280
        height: 800
    
        Row{
            width: parent.width
            height: parent.height
    
            Rectangle{
                width: 80
                height: parent.height
                z: 2
                color: 'green'
            }
    
            Window {
                id: mainView
                y: window.y
                x: window.x + 80
                height: 800
                width: 1200
                visible: true
    
                flags: Qt.FramelessWindowHint
    
                color: 'red'
    
                Drawer{
                    width: parent.width
                    height: parent.height
                    edge: Qt.LeftEdge
    
                }
            }
        }
    }
    

    请注意,像这样你不能点击第二个窗口,所以你需要在那个窗口中放入好东西。