有Qt.quit()
退出应用程序,但我只想退出当前屏幕,这应该让我回到父屏幕。我该怎么做?
Rectangle {
id: page
visible: true
width: 360
height: 480
Button {
width: 150
height: 50
text: "Parent"
onClicked: {
console.log("Parent pressed")
//? how to exit this screen here?
}
}
}
以下是Folibis回答后的新代码。
import QtQuick 2.3
import QtQuick.Window 2.2
Window {
visible: true
width: 360
height: 360
property bool isClose: false
MouseArea {
anchors.fill: parent
onClicked: {
if(isClose)
Qt.quit();
else
Page2.show() //subWindow.show();
isClose = true;
}
}
Text {
text: qsTr("Hello World")
anchors.centerIn: parent
}
}
Window位于新的qml文件中,现在名为Page2.qml
import QtQuick 2.0
import QtQuick.Window 2.2
Window {
id: subWindow
visible: false
width: 400
height: 400
flags: Qt.Dialog
Text {
anchors.centerIn: parent
text: "Click me to close the subwindow"
}
MouseArea {
anchors.fill: parent
onClicked: subWindow.close();
}
}
问题是如何从main.qml调用Page2.qml?
答案 0 :(得分:1)
我认为在应用程序中组织窗口的正确方法是使用适当的组件。
Rectangle
作为窗口没有用,也没有语义。使用Window
作为对话框和辅助窗口,使用ApplicationWindow
作为主窗口。作为奖励,您拥有管理它的所有有用功能。
示例:
ApplicationWindow {
width: 800
height: 600
id: mainWindow
property bool isClose: false
Text {
anchors.centerIn: parent
text: isClose ? "Click me to close the main window" : "Click me to show subwindow"
}
MouseArea {
anchors.fill: parent
onClicked: {
if(isClose)
Qt.quit();
else
subWindow.show();
isClose = true;
}
}
Window {
id: subWindow
visible: false
width: 400
height: 400
flags: Qt.Dialog
Text {
anchors.centerIn: parent
text: "Click me to close the subwindow"
}
MouseArea {
anchors.fill: parent
onClicked: subWindow.close();
}
}
}
答案 1 :(得分:0)
实例化新窗口
var component = Qt.createComponent("Page2.qml");
if (component.status == Component.Ready) {
var subWindow = component.createObject(mainWindow);
conn.target = subWindow;
subWindow.show();
}
Connections {
id: conn
onVisibleChanged: {
if(visible)
console.log("window closed");
}
}
作为奖励 - 触发窗口关闭事件的代码