Ваш GrabWindow
не отображается, поскольку при настройке свойства visible
он не такой, как при использовании свойства Window
visible
.
У вас просто visible
свойство QWindow
.Window
не создает непосредственно экземпляр QQuickWindow
, он создает частный класс Qt QQuickWindowImpl
, который переопределяет свойство visible
на собственный.Кажется, это задерживает фактический вызов QWindow::setVisible
в более позднее время.
Поэтому я не думаю, что QQuickWindow
предназначен для наследования.Вы можете попробовать сделать visible = true
в своем Component.onCompleted
, но я не уверен, что это решит вашу проблему.
Вместо этого я бы посоветовал вам не создавать подклассы QQuickWindow
, а просто создать новый тип и передатьэто существующий Window
.
Возможные API могут быть:
Window {
id: myWindow
//...
MouseArea {
anchors.fill: parent
onClicked: WindowGrabber.grab(myWindow, path) //singleton type
}
}
или
Window {
id: myWindow
//...
WindowGrabber { // regular type
id: windowGrabber
window: myWindow
}
MouseArea {
anchors.fill: parent
onClicked: windowGrabber.grab(path) // you could even add a path property in WindowGrabber and not have it as a function parameter if that makes sense for your use case
}
}