2016-10-18 3 views
1

Diese Frage ist in Bezug auf QML, QtQuick 1.1, Qt 4.8.6Laden aller GUI-Bildschirm bei Start des Programms in QtQuick

Ich habe Quellcode einer Embedded-Anwendung gesehen, in dem alle Bildschirmen geladen am Anfang. Zum Beispiel

//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} 
    ... 
    ... 
    ... 
} 

und im jeweiligen Bildschirm Dokument, wenn eine Maus Bereich the Value of Z des einzelnen Dokuments geklickt wird geändert, um es vorne erscheinen

//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} 
    } 

Meine Frage ist,

1. Ab main.qml werden alle untergeordneten Objekte gleichzeitig erstellt und nur ihre Sichtbarkeit der Stapelreihenfolge wird geändert. Ist das eine gute Methode?

2. Wenn so viele Kinder am Anfang geladen werden, was passiert, wenn ich wie 200 Bildschirme habe. Wie wirkt sich die CPU beim Start und während des Betriebs aus?

Gibt es eine andere Methode für Bildschirmübergänge?

Andere als Komponentenlader. Ich möchte dieses Feature nicht verwenden

Wie wird dieser Code konvertiert und in der Anzeige als Objekt angezeigt?

Ich werde sehr glücklich sein, am wenigsten Sie können Hinweise in Kommentaren geben.

Danke !!

+0

Für Bildschirmübergänge können Sie mit [StackView] (http://doc.qt.io/qt-5/qml-qtquick-controls-stackview .html) – user2436719

+0

Mögliches Duplikat [Wie GUI-Bildschirm Übergang funktioniert in qml] (http: // Stackoverflow.com/questions/39655466/how-gui-Bildschirm-Übergang-arbeitet-in-qml) – Velkan

Antwort

3

Um Ihre Fragen:

1): schlechte Idee. Beim Verwenden des Z-Index muss die Engine feststellen, dass die unteren Elemente vollständig ausgeblendet sind. Sie sollten dem Enigne helfen, wenn Sie sich sicher sind (was hier der Fall wäre), indem Sie visibility auf false setzen. Dann müssten Sie den Z-Index jedoch überhaupt nicht verwenden. Verwenden Sie nicht den Z-Index. Nicht!

Dies wird jedoch nicht lösen, dass Sie möglicherweise 200 komplexe Ansichten in Ihrem Speicher haben.
Die von Ihnen erwähnte Loader ist schon ein besserer Start. Sie können es in Kombination mit der Sichtbarkeit von Seiten verwenden vorzuladen, die wahrscheinlich bald gezeigt werden, und sie entladen, wenn Sie sicher sind, dass sie (innerhalb der nächsten ein oder zwei Klicks) nicht in nächster Zeit gezeigt

2) : Der Effekt ist: lange Zeit von reagiert nicht, bis alles geladen ist. Die Dokumentation sais: Zeigen Sie einen Splash-Bildschirm, wenn Sie so etwas wie dies tun wollen. Um den Startbildschirm zu zeigen, zeigen sie, dann eine Loader verwenden alle die anderen Sachen zu laden ... Aber im Allgemeinen: Tu es nicht, wenn nicht absolut notwendig ist. Dynamisch laden Verwenden Sie niemals die z-index-Bildschirme vollständig auszublenden. Legen Sie nur, was muss geladen werden ... Ich fühle mich repetitiven ...

+0

Ich stimme mit der Kombination von Sichtbarkeit und Lader für die entsprechenden Bildschirme. Vielen Dank! Eine weitere Frage ist, ob ich die aktuellen Einstellungen, Daten und den Zustand bestimmter Bildschirme speichern möchte. Welche Methode schlagen Sie vor? In .txt speichern oder Sichtbarkeit verwenden, um sich zu verstecken oder andere? –

+0

Trennen Sie Ihre Daten (Modell) und Ihre Ansicht, so dass die Bildschirme zustandslos sind. Dieses Modell könnte durch verschiedene Verfahren gespeichert werden, z. XML, JSON, SQL oder was immer am besten zu Ihrem System passt, wenn es persistent sein muss (einen Neustart des Programms überleben). Wenn dies nicht unbedingt erforderlich ist, wird dies in QtObjects gespeichert, die nicht erneut geladen werden. Versuchen Sie, die Daten in diesen QtObjects auf das zu beschränken, was zum Wiederherstellen der Ansicht erforderlich ist. – derM

+0

Blick in MVC/MVVM-Pattern – derM

Verwandte Themen