Bb10连接qml布局

时间:2013-06-28 09:13:20

标签: qml blackberry-10

当我从一个qml布局点击按钮到其他qml时,如何加载视图?因为我有一个登录按钮,如果我点击按钮,我想显示下一个屏幕,这是登陆屏幕,如何做到这一点?谁能发一些想法?谢谢。我知道onclicked但是如何将它引用到其他qml布局?

ImageButton {
                    id: btnlogin
                    topMargin: 50
                    verticalAlignment: VerticalAlignment.Center
                    horizontalAlignment: HorizontalAlignment.Center
                    defaultImageSource: "asset:///images/button_login.png"

                    onClicked: {
                        onClicked: {

1 个答案:

答案 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 - ...

有很多方法可以实现您想要做的事情。

希望这些小技巧能有所帮助。