1

我在 Sign.qml 页面中使用了 NavigationPane,用户登录后它将转到 Homescreen.qml 中的 Homescreen.qml 我使用了 TabbedPane,同时单击登录按钮 (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,谁能给我一些想法如何做到这一点..?

4

2 回答 2

3

您不能在 NavigationPane 中推送 TabbedPane。最佳做法是在应用程序流顶部使用 TabbedPane,如果您想更深入,可以在 TabbedPane 中使用 NavigationPane。

仍然有适合您的解决方法。您可以将 TabbedPane 放在工作表中并打开该工作表,而不是推入 NavigationPane。

attachedObjects: Sheet {
            id: tabbedPaneSheet
            Homescreen{
            }
    }
...
onClicked{
    tabbedPaneSheet.open()
}
...
于 2012-12-11T09:04:43.530 回答
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);

    }
于 2013-03-12T05:45:01.270 回答