amf1k
@amf1k

Как управлять окнами в QML?

Как можно управлять разными окнами в QML Desktop? Суть такая, что при запуске приложения подготавливаются необходимые ресурсы и это достаточно продолжительно время и есть необходимость показывать некой SplashScreen, после него открывать основное окно с приложением.
На просторах интернета были найдены решения для Android и манифестом.
Так же были найдены решения с ApplicationWindow и Loader`ами, но все равно работает немного не так как надо.
В общем интересует какие есть best practices по управлению окнами в QML для Desktop.
import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.5

ApplicationWindow{
    id: rootWindow
    width: 600
    height: 600
    visible: true
    flags: Qt.Window

    Loader {
        id: loader
        Component {
            id: waitWin
            Window {
                id: waitWindow
                width: 300
                height: 300
                flags: Qt.FramelessWindowHint | Qt.Window
                Rectangle {
                    anchors.fill: parent
                    color: "red"
                }
                Text {
                    anchors.centerIn: parent
                    text: "WAIT WINDOW"
                }
                Timer {
                    interval: 2000
                    running: true
                    repeat: false
                    onTriggered: {
                        loader.sourceComponent = mainWin
                    }
                }
            }
        }

        Component {
            id: mainWin
            Window {
                id: mainWindow
                width: 600
                height: 600
                flags: Qt.Window
                Rectangle {
                    anchors.fill: parent
                    color: "green"
                }
                Text {
                    anchors.centerIn: parent
                    text: "WAIT WINDOW"
                }
            }
        }
        sourceComponent: waitWin
    }
}

Данный код приводит к тому, что существует 2 окна сразу (ApplicationWindow и Window). Или в лоадере надо менять только содержимое окна?
  • Вопрос задан
  • 993 просмотра
Решения вопроса 1
Zifix
@Zifix Куратор тега Qt
Barbatum
Можно подумать над использованием стандартного сплаша и из виджетов: https://doc.qt.io/qt-5/qsplashscreen.html

Что касается окон, вариантов много, можно обойтись без этих всех заморочек с лоадерами и компонентами (если нет необходимости). Например, корневой элемент просто Item, в нём вложены два окна с противоположными значениями visible.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы