有几种方法可以实现这一点。你可以 :
1 - 调用将显示下一个屏幕的 C++ 函数。为此,您必须创建一个 Q_INVOKABLE 方法(例如在与当前页面关联的类中),例如
Q_INVOKABLE void showLoginPage();
然后你以这种方式从 QML 调用它
onClicked: {
controller.showLoginPage();
}
2 - 直接从 QML 显示下一个屏幕。
onClicked: {
// Directly show the next page from here
}
然后实际显示下一个屏幕,根据您拥有的导航类型,也有不同的方式:
1 - 如果您使用的是 NavigationPane,请按屏幕:
C++ 示例
QmlDocument *qml = QmlDocument::create("LoginPage.qml");
// Creates the root using the page node
Page *loginPage = qml->createRootNode<Page>();
// Push the login page
navigationPane->push(loginPage);
QML 示例
ImageButton {
id: btnlogin
topMargin: 50
verticalAlignment: VerticalAlignment.Center
horizontalAlignment: HorizontalAlignment.Center
defaultImageSource: "asset:///images/button_login.png"
onClicked: {
// show login page when the button is clicked
var page = getLoginPage();
navigationPane.push(page);
}
property Page loginPage
function getLoginPage() {
if (!loginPage) {
loginPage = loginPageDefinition.createObject();
}
return loginPage;
}
attachedObjects: [
ComponentDefinition {
id: loginPageDefinition
source: "LoginPage.qml"
}
]
2 - 您也可以使用表格
3 - ...
有很多方法可以实现您想做的事情。
希望这些小技巧会有所帮助。