Корректное создание дополнительного окна в qml
Изучаю qml, и возник вопрос как корректно создавать дополнительных окна, в которых я планирую размещать некоторую информацию в виде графиков. Сейчас для этого я создал файл PlotsWindow.qml, который описывает это окно:
import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls.Material 2.12
Window {
signal winClosing()
property alias winChartViewer: winChartViewer
width: mainWidth - 100
height: mainHeight - 100
visible: false
color: "black"
ChartView {
id: winChartViewer
anchors.fill: parent
}
onClosing: winClosing()
}
ChartView - также файл, где описан элемент самого графика с осями и сериями.
Элемент PlotsWindow я поместил внутрь Loader'а в главном окне ApplicationWindow:
Loader {
id: plotViewer1
onStatusChanged: console.log("first obj status", status, "item", item)
source: "PlotsWindow.qml"
active: false
onLoaded: {
item.winClosing.connect(whenWinClosing)
UIPlotWin.setSeriesAxis(0, item.winChartViewer.lineSeries,
item.winChartViewer.axisX, item.winChartViewer.axisY)
}
Component.onDestruction: {
if (item) {
item.winClosing.disconnect(whenWinClosing);
console.log("signal was disconnected");
}
}
function whenWinClosing() {
plotViewer1.active = false;
playerPanel.checkBox1.checked = false;
UIPlotWin.testPlotFormingStop();
UIPlotWin.deleteSeriesAxis(0);
console.log("Win1 has been closed");
}
}
И вот у меня ощущение, что я делаю это все по-корявому, ибо:
1) Новое окно всегда находится поверх главного;
2) При закрытие основного окна, когда дополнительное окно открыто, последнее не закрывается и также не реагирует на нажатия;
3) Слишком много телодвижений просто для создания доп. окна (по сравнению с qt widgets).