将QML TabView内容与另一个项目对齐,以便tabBar与该项目重叠

时间:2015-10-05 03:55:38

标签: qml tabview

我希望TabView中的实际Tab内容能够锚定或排列到另一个可视元素的底部。在这种情况下,顶部的tabBar将与所讨论的另一个元素重叠。

我的问题是我不知道如何获取TabView的Tab内容的y坐标,或者如何获取tabBar中的tab按钮的高度,以便我可以根据它来偏移对齐。

我可以想出两种方法来解决这个问题,这两种方法都很笨重: 选项1 - 我可以创建一个没有内容的TabView,它位于我的其他元素中。然后我可以使用tabsVisible = false创建第二个TabView。然后将2连在一起。

选项2 - 我可以覆盖tab:在TabViewStyle中,从属性设置它的高度,这样我就可以根据tabBar高度偏移我的TabView.y。

选项3:以某种方式获取TabView内Tab选项卡的y坐标(相对于TabView或父项)或以某种方式获取现有选项卡(按钮)高度。我不知道如何做其中任何一个。

选项1和2看起来非常笨重。有任何想法吗?

1 个答案:

答案 0 :(得分:0)

实际上,您可以非常轻松地获取此信息。 TabView定义contentItem属性,该属性包含选项卡视图的内容项。因此,标签按钮的高度为tabView.height - tabView.contentItem.height

示例:

import QtQuick 2.2
import QtQuick.Controls 1.1

Item {
    width: 350
    height: 150

    TabView
    {
        id: tabview
        height: parent.height
        width: parent.width/2
        Component.onCompleted: {addTab("1");addTab("2")}
    }

    Column
    {
        anchors.left: tabview.right
        anchors.right: parent.right
        Rectangle
        {
            width: parent.width
            height: tabview.height-tabview.contentItem.height
            color: "red"
        }
        Rectangle
        {
            width: parent.width
            color: "yellow"
            height: tabview.contentItem.height
        }
    }
}