如何在 QML 中关闭带有特定 button/area 的抽屉弹出窗口?

How to close a drawer popup with a specific button/area outside it in QML?

我创建了一个抽屉,我希望通过按下触发它的同一个按钮来关闭它。这个按钮在抽屉外面。但是 QML 似乎不允许这是弹出窗口的唯一关闭策略(抽屉 属性 关闭)选项:

此外,由于某种原因,当 visible/drawn 时,我似乎无法单击抽屉外的任何按钮。如果不是这样,我也不会有这个问题。

我可以通过点击抽屉外面的特定 button/area 来关闭抽屉吗?

有人知道解决办法吗? 提前致谢!

Drawer 继承自 Popup,因此我们可以利用这些优势来控制行为。通过设置 model: falseclosePolicy: Popup.NoAutoClose 可以通过按钮操作控制抽屉。

Window {
    id: window
    width: 640
    height: 480
    visible: true

    Drawer {
        id: drawer
        width: 0.4 * window.width
        height: window.height
        closePolicy: Popup.NoAutoClose
        modal: false
    }

    Button {
        text: drawer.visible ? "close" : "open"
        anchors.centerIn: parent
        onClicked: {
            drawer.visible = !drawer.visible
        }
    }
}