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

问题描述:

我希望TabView中的实际Tab内容可以锚定或排列到另一个可视元素的底部。在这种情况下,顶部的tabBar会与其他正在讨论的元素重叠。将QML TabView内容与另一个项目对齐,以便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看起来非常笨重。有任何想法吗?

其实你可以很容易地得到这些信息。 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 
     } 
    } 
}