当我从一个qml布局点击按钮到其他qml时,如何加载视图?因为我有一个登录按钮,如果我点击按钮,我想显示下一个屏幕,这是登陆屏幕,如何做到这一点?谁能发一些想法?谢谢。我知道onclicked但是如何将它引用到其他qml布局?
ImageButton {
id: btnlogin
topMargin: 50
verticalAlignment: VerticalAlignment.Center
horizontalAlignment: HorizontalAlignment.Center
defaultImageSource: "asset:///images/button_login.png"
onClicked: {
onClicked: {
答案 0 :(得分:2)
有几种方法可以实现这一目标。 你可以:
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 - ...
有很多方法可以实现您想要做的事情。
希望这些小技巧能有所帮助。