我在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,任何人都可以告诉我如何做到这一点..?
答案 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);
}