blackberry 10 cascades tabbedpane

时间:2012-12-11 06:54:57

标签: blackberry-cascades

我在Sign.qml页面中使用了NavigationPane,在用户登录后,它将转到Homescreen.qml 在Homescreen.qml中我使用了TabbedPane,同时单击Login按钮(Signin.qml)我得到了响应,但无法转到Homescreen.qml

特此附上我的代码   Signin.qml

    NavigationPane {
              id: navigationPane
          Page {

    attachedObjects: ComponentDefinition {
        id: pageDefinition
        source: "HomeScreen.qml"
    }
    Container {
        Button {
            text: "Login"
            onClicked: {
                //check if is credentials are valid or not
                if(isValidUser())
                {
                    var page = pageDefinition.createObject();
                    navigationPane.push(page);
                }
                else
                {
                    //show error message
                }
            }
        }
    }
}}

和我的Homescreen.qml代码

       import bb.cascades 1.0

           TabbedPane {
             id: mainTab
             showTabsOnActionBar: true 

Tab {
       title: "Home"
       imageSource: "asset:///menuicons/home.png"

        Signin {
           id: signin
       }
   }
Tab {
    title: "Home"
    imageSource: "asset:///menuicons/home.png"

     Editnew {
        id: homepage
    }
}
Tab {
    title: "Messages"

    Messages {

    }
}

Tab {
    title: "Search"

    Search{

    }
}
Tab {
    title: "Feeds"

    Feeds {

    }
}

Tab {
    title: "Nearby"

    Nearby{

    }
}
Tab {
    title: "Followers"

    Followers {
        id: foll
    }
}
Tab {
    title: "Group"

    Groups {
        id: groups
    }
}

我无法在登录时点击登录按钮查看Homescreen.qml,任何人都可以告诉我如何做到这一点..?

2 个答案:

答案 0 :(得分:3)

您无法在NavigationPane中推送TabbedPane。最好在应用程序流程的顶部使用TabbedPane,如果你想深入了解,可以在TabbedPane中使用NavigationPane。

还有一个解决方法。您可以将TabbedPane放在工作表中并打开该工作表,而不是推入NavigationPane。

attachedObjects: Sheet {
            id: tabbedPaneSheet
            Homescreen{
            }
    }
...
onClicked{
    tabbedPaneSheet.open()
}
...

答案 1 :(得分:0)

登录 ....中再创建一个这样的函数并调用此函数。

void  xxxx::homescreen()
   {



        // create scene document from main.qml asset
        // set parent to created document to ensure it exists for the whole application lifetime
        QmlDocument *qml = QmlDocument::create("asset:///homescreen.qml").parent(this);

        qml->setContextProperty("_app", this);


        AbstractPane *root = qml->createRootObject<AbstractPane>();



        // set created root object as a scene


        app1->setScene(root);

    }