Вы можете использовать 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
}
}
}
Я не знаю, может ли свойство name измениться в течение времени жизни приложение (например, из-за того, что пользователь переименовал его), но пока что это единственный способ однозначной идентификации экрана, который я нашел, поскольку другие свойства, такие как serialNumber
, не установлены для меня, а QTBUG-85934 предотвращает сравнение экранных объектов.