2016-10-18 3 views
1

Этот вопрос касается QML, QtQuick 1.1, Qt 4.8.6Загрузка всех GUI экранов при запуске программы в QtQuick

Я видел исходный код встроенного приложения, в котором все экраны загружены в начале. Для примера,

//Main.qml 
Rectangle{      //Base Container 
    width:640 
    height:480 

    MainScreen{ id: main_screen} //Individual screen files are given here 
    SettingScreen1 { id:screen1} 
    SettingScreen2 { id:screen2} 
    HelpScreen1 {id: help_screen1} 
    ... 
    ... 
    ... 
} 

и в соответствующем документе экрана, когда область мыши щелкнул the Value of Z отдельного документа изменяется, чтобы сделать вид спереди

//MainScreen.qml 
Rectangle{ 
    width: 640 
    height:480 
    z:1 
    //some buttons 
    //Mousearea for next button 
    onClicked: {screen1.z = 10} 

    //Mousearea for back button 
    onClicked: {screen1.z = 0} 
    } 

Мой вопрос,

1. Как и из main.qml, все дети создаются сразу и изменяется только их видимость порядка стека. Это хороший метод?

2. Когда так много детей загружаются в начале, что происходит, если у меня есть 200 экранов. Каков эффект загрузки процессора при запуске и во время работы.

Есть ли какой-либо другой метод для экранных переходов?

Загрузчик компонентов. Я не хочу использовать эту функцию

Как этот код преобразуется и отображается на дисплее как объект?

Я буду очень рад, это меньше всего, что вы можете дать в комментариях.

Спасибо!

+0

Для переключения экрана вы можете использовать [StackView] (http://doc.qt.io/qt-5/qml-qtquick-controls-stackview .html) – user2436719

+0

Возможный дубликат [Как работает переход экрана GUI в qml] (http: // stackoverflow.com/questions/39655466/how-gui-screen-transition-works-in-qml) – Velkan

ответ

3

на вопросы:

1): плохая идея. Использование z-index нуждается в двигателе, чтобы определить, что нижние элементы скрыты полностью. Вы должны помочь enigne, если вы уверены в этом (что было бы здесь), установив visibility на false. Затем, однако, вам не нужно будет использовать z-index. Не используйте z-index. Не надо!

Однако это не решит, что у вас может быть 200 возможных сложных видов в вашей памяти.
Loader Вы упомянули, это уже лучший старт. Вы можете использовать его в сочетании с видимостью для предварительной загрузки страниц, которые, вероятно, будут показаны в ближайшее время, и выгружать их, как только вы уверены, что они не отображаются в ближайшее время (в течение одного или двух кликов)

2) : Эффект: длительное время не реагирует, пока все не загрузится. Документация sais: покажите заставку, если вы хотите сделать что-то вроде этого. Чтобы показать заставку, покажите ее, затем используйте Loader, чтобы загрузить все остальные вещи ... Но в целом: Не делайте этого, если не абсолютно необходимо. Загружайте динамически. Никогда не используйте z-index для полного скрытия экранов. Загрузите только то, что нужно загрузить ... Я чувствую повторяемость ...

+0

Я согласен с комбинацией видимости и загрузчика для соответствующих экранов. Благодаря! Еще один вопрос: если я хочу сохранить текущие настройки, данные и состояние определенных экранов. Какой метод вы предлагаете. Сохранить в .txt или использовать видимость для скрытия или любого другого? –

+0

Отделите свои данные (модель) и ваш вид, чтобы экраны были безстоящими. Эта модель может быть сохранена различными способами, например. XML, JSON, SQL или того, что когда-либо подходит для вашей системы, если оно должно быть постоянным (выжить при перезапуске программы). Если это не обязательно, оно сохраняется в QtObjects, которые не перезагружаются. Попытайтесь минимизировать данные в этих QtObjects только для того, что необходимо для восстановления представления. – derM

+0

Посмотрите на MVC/MVVM-шаблон – derM