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 阻止比较屏幕对象。
当我使用 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 阻止比较屏幕对象。