从相应SwipeView的Pages标题中填充TabView

时间:2017-07-03 09:34:08

标签: qt qml qt-quick

通过简单导航创建多个单独的可见网页的简单方法是同时使用SwipeViewTabBar

import QtQuick 2.9
import QtQuick.Controls 2.2
import QtQuick.Layouts 1.3

Page {
    id: page

    header: TabBar {
        id: tabBar

        currentIndex: swipeView.currentIndex

        TabButton {
            text: qsTr("Page1")
        }
        TabButton {
            text: qsTr("Page2")
        }
    }

    SwipeView {
        id: swipeView

        width: page.width
        height: page.height

        currentIndex: tabBar.currentIndex

        Page {
            width: swipeView.width
            height: swipeView.height

            title: qsTr("Page1")

            Pane {
                anchors.fill: parent
            }
        }
        Page {
            width: swipeView.width
            height: swipeView.height

            title: qsTr("Page2")

            Pane {
                anchors.fill: parent
            }
        } 
    }
}

title组件中有Page个属性。它在上面的例子中是不可见的,但它是在我脑海中存储标签标题的适当位置。我可以使用Repeater页面的某些属性(即TabBar)生成SwipeView内容.title来填充TabButton.text吗?

我查看了文档,但找不到SwipeView的属性,这允许我通过索引(例如pages[index])访问其页面。

1 个答案:

答案 0 :(得分:2)

Qt Quick 很棒!我很快就找到了答案:

Repeater {
    model: swipeView.count
    TabButton {
        text: swipeView.contentChildren[index].title
    }
}

甚至更简单

Repeater {
    model: swipeView.contentChildren
    TabButton {
        text: modelData.title
    }
}