Qt QML中没有内容的选项卡视图

Qt QML中没有内容的选项卡视图,qt,tabs,qml,qt5,qtquick2,Qt,Tabs,Qml,Qt5,Qtquick2,我想为用户提供一个选项卡栏来选择要筛选的元素之一 ColumnLayout { anchors.fill: parent TabView { Layout.fillWidth: true Tab { title: "all" } Tab { title: "even" } Tab { title: "odd" } Tab { title: "multiple of 3" } T

我想为用户提供一个选项卡栏来选择要筛选的元素之一

ColumnLayout
{
    anchors.fill: parent
    TabView
    {
        Layout.fillWidth: true
        Tab { title: "all" }
        Tab { title: "even" }
        Tab { title: "odd" }
        Tab { title: "multiple of 3" }
        Tab { title: "prime" }
    }
    TableView
    {
        Layout.fillHeight: true
        Layout.fillWidth: true
        model: mymodel

        TableViewColumn
        {
            role: "name"
            title: "name"
        }
        TableViewColumn
        {
            role: "number"
            title: "number"
        }
    }
}
不幸的是,在TabBar和TableView之间显示了大约100px的空白

我不想创建4个表视图-我宁愿修改模型。我知道
QtQuick.Controls.Private
中有
TabBar
,但我宁愿避免使用私有组件,因为它们可以随时更改

有没有办法只显示选项卡栏而不访问私有组件,例如隐藏空白


我不想改写风格,因为在Android上,它会给我可怕的、非本地的外观

据我所知,没有可靠的方法来实现这一点

不过,还有一种依赖于平台/DPI的黑客攻击。您可以使用滑块计算理想高度:

import QtQuick 2.3
import QtQuick.Window 2.2
import QtQuick.Controls 1.2
import QtQuick.Layouts 1.2

Window {
    id: window
    visible: true
    width: 400
    height: 400

    ColumnLayout {
        anchors.fill: parent
        spacing: 0

        TabView {
            Layout.fillWidth: true
            Layout.preferredHeight: s.value

            Tab {
                title: "all"
            }
            Tab {
                title: "even"
            }
            Tab {
                title: "odd"
            }
            Tab {
                title: "multiple of 3"
            }
            Tab {
                title: "prime"
            }
        }
        TableView {
            Layout.fillHeight: true
            Layout.fillWidth: true
            model: ListModel {
                ListElement {
                    name: "A"
                    title: "1"
                }
                ListElement {
                    name: "B"
                    title: "2"
                }
                ListElement {
                    name: "C"
                    title: "3"
                }
            }

            TableViewColumn {
                role: "name"
                title: "name"
            }
            TableViewColumn {
                role: "number"
                title: "number"
            }
        }
    }

    Slider {
        id: s
        minimumValue: 0
        maximumValue: 50
        anchors.bottom: parent.bottom

        Text {
            text: s.value.toFixed(0)
            anchors.left: parent.right
        }
    }
}


对我来说,在桌面上,它是29像素。

但它不是便携式的。在Android上,我必须支持多个屏幕和各种DPINOP,但事实并非如此。它很黑。嗯。。。是否可以使内容非常小,例如1px高?
选项卡的内容
contentItem
属性是只读的,所以不是。下面是您的答案:P