级联QML TabPane - 通过多个页面维护TabPane

时间:2014-09-07 15:31:03

标签: qt blackberry qml blackberry-10 blackberry-cascades

我整个周末一直试图研究这个,但找不到类似的例子。 我试图通过多个页面保持TabPane的一致性。截至目前,一旦超过1页,TabPane将不再存在。

例如:

TabbedPane {
    id: root
    showTabsOnActionBar: true 

    Tab { 
        title: qsTr("Search") + Retranslate.onLocaleOrLanguageChanged
        Search {
        }
    }
}

// Search.qml
NavigationPane {
    id: navigationPane

    Page {
        Button {
            onClicked: {
                navigationPush.push(pageSearchResults.createObject())
            }
        }
    }
    attachObjects: [
        ComponentDefinition {
            id: pageSearchResults
            SearchResults {

            }  
        }
    ]
}

所以基本上,当我们在Search页面上时,我们有TabPane。 只要我按下Button并导航到SearchResults页面即可。 TabPane不见了......

    // SearchResults.qml
    // We're now 2 pages -IN- from the TabPane
    Page {
        Button {
            onClicked: {
                navigationPush.push(nextPage.createObject())
            }
        }

        attachObjects: [
            ComponentDefinition {
                id: nextPage
                NextPage {

                }  
            }
        ]
    }

一旦我们进入SearchResults - 它就不会让我push成为下一页。当我点击SearchResults上的按钮时,您可以看到navigationPush(nextPage.createObject())。它给出了以下错误:

  

pushPage:mNavigationStack:(" 211")NavigationPane:   NavigationPaneOnFwdTransitionDone:发送推送转换结束   页面:211客户端顶部:211

1 个答案:

答案 0 :(得分:0)

您需要做的是将一个navigationPane添加到选项卡并将页面推到该选项卡上。

应打开一张纸,以便与标签分开 - 例如设置页面。表格还需要按钮或代码才能关闭它们。

您的代码中是否不清楚您是否使用了navigationPane,因此以下是它应该如何工作的示例:

TabbedPane {
    id: root
    showTabsOnActionBar: true 

    Tab { 
        title: qsTr("Search") + Retranslate.onLocaleOrLanguageChanged
        NavigationPane {
            id: navSearch
            Page {

            }                
        }
    }
}

现在,当您想要导航到搜索中的下一页时,您会将其添加到navSearch navigationPane。这也会给你后退按钮。

通过此处阅读有关导航的文档非常有用:http://developer.blackberry.com/native/documentation/cascades/ui/navigation/index.html

它将解释有关导航如何工作以及标签窗格和工作表等不同元素如何相互作用的许多细节。