2017-06-15 10 views
0

QT/QML、PyQtデスクトップアプリケーションの作業を開始しました。私はQt/QMLの基礎知識を持っています。QT/QMLを再起動するメインウィンドウから

私は1つのデスクトップアプリケーションを変更しようとしていますが既に存在します。

ここにあります 別のウィンドウを開くアプリケーションのメインウィンドウにボタンを1つ追加しました。

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=""; 
    } 
} 

私はボタンをクリックすると、新しいウィンドウが正常オープンしています。しかし、私が新しいウィンドウを閉じて、再び開いてみると、開かないでしょう。単に "Clicked"と表示されます。

+0

私はあなたの例からいくつかの混乱を取り除いたので、あなたの例はそのままの状態で動作します。最小限で完全で検証可能な例の要件を調べるには、[help](https://stackoverflow.com/help/mcve)を参照してください。 – derM

答えて

0

MouseAreaをクリックしてウィンドウを閉じるときにのみ、Loaderソースをクリアするのが問題です。 xボタンで閉じると、クリアされないので、ローダーはアクティブのままであり、ソースはそのままです。

これを解決するために、あなたは確認することができますいずれか、今まであなたが

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

を持つことにより、またはWindow S closing() -signal

onClosing: pageLoader.source = "" 
を使用してオープン Buttonを、クリックソースの変更、
+0

それは働きました!ありがとう:) – RaThOd

+2

正しい場合は、正しい答えとしてそれを受け入れることを忘れないでください。それが役に立つなら、それをupvoteしてください。見つからないことがある場合は、コメントで指摘してください。そのため、回答を改善することができます。これにより、サイトの品質が保証されます。 – derM

関連する問題