2017-06-15 10 views
0

Ich begann mit der Arbeit an QT/QML, PyQt Desktop Application. Ich habe Grundkenntnisse in Qt/QML und allen.QT/QML wieder öffnen Neues Fenster vom Hauptfenster

Ich versuche, eine Desktop-Anwendung bereits zu ändern.

Hier ist Ich habe einen Button im Hauptfenster der Anwendung, die ein anderes Fenster öffnen.

main.qml

Button { 
    text: "Open Window" 

    Loader{ id: pageLoader } 

    onClicked: { 
     console.log("Clicked") 
     pageLoader.source = "testing.qml" 
    } 
} 

testing.qml

import QtQuick 2.2 
import QtQuick.Window 2.2 

Window { 
    id: win1 
    width: 1000; 
    height: 1000; 
    visible: true; 
    visibility: "Maximized" 
    color: "#363636"; 
    title: "First Window"; 
    Text { 
     anchors.centerIn: parent 
     text: "Page 1" 
    } 
    MouseArea{ 
     anchors.fill: parent; 
     onClicked: pageLoader.source=""; 
    } 
} 

Wenn ich auf Schaltfläche geklickt wird, ist neues Fenster erfolgreich geöffnet. Aber als ich ein neues Fenster schloss und versuchte, es wieder zu öffnen, wird es nicht geöffnet. Es druckt nur "Clicked".

+0

Ich entfernte etwas von dem Durcheinander aus Ihrem Beispiel, so dass Ihr Beispiel funktioniert aus der Box. Bitte konsultieren Sie die [Hilfe] (https://stackoverflow.com/help/mcve), um die Voraussetzungen für ein minimales, vollständiges und überprüfbares Beispiel zu finden. – derM

Antwort

0

Ihr Problem ist, dass Sie die Quelle Loader nur löschen, wenn Sie das Fenster schließen, indem Sie auf die MouseArea klicken, die es enthält. Wenn Sie es mit der x -Schaltfläche schließen, löschen Sie es nicht, damit der Loader aktiv bleibt und die Quelle gleich bleibt.

Um dies zu lösen, können Sie entweder sicherstellen, dass die Quelle ändert, wann immer Sie die Open-Button klicken, um

mit
onClicked: { 
    pageLoader.source = "" // Clearing first 
    pageLoader.source = "testing.qml" // Setting again 
} 

oder durch die closing() -Signals

onClosing: pageLoader.source = "" 
s Window mit
+0

Es funktionierte .. !! Danke :) – RaThOd

+2

Wenn es richtig ist, bitte nicht vergessen, es als die richtige Antwort zu akzeptieren. Wenn es hilfreich ist, bitte upvote es. Wenn etwas fehlt, weisen Sie es in einem Kommentar darauf hin, damit die Antwort verbessert werden kann. Dies gewährleistet die Qualität der Website. – derM

Verwandte Themen