将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
}
}
}