Ich entwickle eine Qt-App auf Win/Android. Meine Frage ist sehr einfach.Wie verhindert man die Wiederherstellung der Seite in einem Loader?
Wenn meine App startet, begrüßt Sie zunächst eine Anmeldeseite. Wenn Sie Servereinstellungen konfigurieren möchten, wird ServerInfo.qml
in einem Loader geöffnet. Die Login-Seite und ServerInfo werden im selben Loader geladen. Mein Problem ist, dass, wenn ich ServerInfo.qml
schließe, dann laden Sie loginpage.qml
Loader, erstellt der Lader eine neue Instanz von loginpage.qml
. Ich möchte nicht, dass die Seite erneut erstellt wird.
Hier ist mein QML-Code:
ApplicationWindow {
id:mainwindow
visible: true
width: 600
height: 800
x: Screen.width/2 - width/2
y: Screen.height/2 - height/2
menuBar:MenuBar{
Menu {
title:"Edit"
MenuItem {
text:"Sunucu Ayarları"
onTriggered: {
loader.source="ServerConfig.qml"
loader.anchors.centerIn=main
}
}
MenuItem {
text:"Çıkış"
onTriggered: {
Qt.quit();
}
}
}
}
Connections {
ignoreUnknownSignals: true
target: process
onProcessstart: {
busyrec.visible=true;
busyloader.item.busytext=text;
busyloader.item.busyrunnig=true;
}
onProcessstop: {
busyloader.item.busytext=text;
busyloader.item.busyrunnig=false;
busyloader.item.busytextcolor="blue"
}
Component.onCompleted: {
// process.onSuccesLogin();
//TaskResultm.taskresult.Malzemeler.push
console.log(TaskResultm.taskresult.serilaze());
}
}
Column {
anchors.fill: parent
Rectangle {
id:busyrec
width: parent.width
height: (parent.height/10)
visible:true
color:"green"
Loader {
id:busyloader
source:"BusyIndicator.qml"
anchors.fill: parent
}
Connections {
ignoreUnknownSignals: true
}
}
Rectangle {
id: main
// anchors.fill: parent
width: parent.width
height: (parent.height/10)*9
Loader {
id:loader
source: "LoginPage.qml"
anchors.centerIn:parent
focus:true
property bool valid: item !== null
}
Connections {
ignoreUnknownSignals: true
target: loader.valid? loader.item : null
onDirecttomainpage:{
// process.getWorkOrderList();
busyloader.item.switenabled=true;
busyloader.item.switopacity=1;
loader.anchors.fill=main;
loader.source="TaskNavigationMainScreen.qml";
}
onServerinfopageclose: {
loader.source="LoginPage.qml";
loader.anchors.centerIn=main;
}
}
}
}
onClosing: {
if(Qt.platform.os=="android") {
if(loader.item!==null)
{
if(loader.item.objectName==="tasknavigationmain")
if(loader.item.zemin===0)
close.accepted=true;
else
close.accepted=false;
}
}
else if (Qt.platform.os=="windows")
{
Qt.quit();
//if(loader.item!==null)
// if(loader.item.objectName==="tasknavigationmain")
// console.log(loader.item.stackViewItem.depth);
}
}
}
Sie können jedoch mehrere Lader haben. Das Idiom ist: ein Lader pro Artikel, den Sie später laden möchten. –
Sie können so viele haben wie Sie möchten, aber Sie müssen trotzdem eine Art Sichtbarkeits- und Auftragsverwaltung implementieren. Es vereitelt den Zweck, besonders wenn Sie bereits die richtige Lösung für das Problem aus der Box haben. – dtech