qml 中的弹出窗口:(closePolicy:Popup.NoAutoClose)

Popup in qml : (closePolicy: Popup.NoAutoClose)

当我使用 closePolicy 时:Popup.NoAutoClose, 这个弹出窗口一直打开并且没有关闭(这是有效的)。当我切换到其他屏幕时,弹出窗口会打开并在其他屏幕中也可见。 如何避免这种行为?

注意:我希望弹出窗口在打开它的特定屏幕上可见,而不是在其他屏幕上可见。

您可以使用 Binding 根据打开弹出窗口的屏幕名称来控制弹出窗口的可见性:

import QtQuick 2.12
import QtQuick.Controls 2.12

ApplicationWindow {
    id: window
    width: 400
    height: 400
    visible: true

    Popup {
        id: popup
        width: 200
        height: 200
        visible: true
        closePolicy: Popup.NoAutoClose

        property string originalScreenName

        Component.onCompleted: originalScreenName = ApplicationWindow.window.screen.name

        Binding {
            target: popup
            property: "visible"
            value: popup.ApplicationWindow.window.screen.name === popup.originalScreenName
        }
    }
}

我不知道名称 属性 是否可以在应用程序的生命周期内更改(例如,由于用户重命名),但到目前为止,这是我找到的唯一标识方式一个屏幕,因为 serialNumber 等其他属性没有为我设置,并且 QTBUG-85934 阻止比较屏幕对象。