如何让TableView列占据所有父级

时间:2018-12-04 16:56:23

标签: qt qml

如何使列占据父级的所有大小? 我为什么要问这个?因为正如我们在一个简单的示例上看到的那样,列并不填充表的所有大小,所以这很丑陋。

我不希望发生在列上的唯一事情是使其宽度小于其列的内容。

我希望该解决方案适用于许多列。

我们如何成功做到?

import QtQuick 2.9
import QtQuick.Controls 2.2
import QtQuick.Controls 1.4
    import QtQuick.Layouts 1.3
import QtQuick.Controls.Styles 1.1

ApplicationWindow {
    id: window
    title: "Stack"
    visible: true
    width: 1400
    ListModel {
        id: libraryModel
        ListElement {
            title: "A Masterpiece"
            author: "Gabriel"
        }
        ListElement {
            title: "Brilliance"
            author: "Jens"
        }
        ListElement {
            title: "Outstanding"
            author: "Frederik"
        }
    }

    Page {
        id: page
        anchors.fill: parent
        TableView{
            style: TableViewStyle{
                handle: Rectangle {
                    implicitWidth: 15
                    implicitHeight: 15
                    color:  "#000000"
                }
                minimumHandleLength: 30
            }
            anchors.fill:parent
            TableViewColumn {
                role: "title"
                title: "Title"
                width: 100
            }
            TableViewColumn {
                role: "author"
                title: "Author"
                width: 200
            }
            model: libraryModel
            itemDelegate: Text
            {
              text: styleData.value
              elide: Text.ElideRight
            }
        }
    }
}

指出了类似的答案

width: (table.width / table.columnCount) - 1

可以使用,但我不想以较小的宽度来剪切项目/文本,我希望滚动条出现:

enter image description here

1 个答案:

答案 0 :(得分:1)

喜欢吗? -1只是为了避免看到令人讨厌的滚动条(可能是由边距/边界引起的)

TableView{
    id: table
    anchors.fill:parent

    style: TableViewStyle{
        handle: Rectangle {
            implicitWidth: 15
            implicitHeight: 15
            color:  "#000000"
        }
        minimumHandleLength: 30
    }

    TableViewColumn {
        role: "title"
        title: "Title"
        width: (table.width / table.columnCount) - 1
    }
    TableViewColumn {
        role: "author"
        title: "Author"
        width: (table.width / table.columnCount) - 1
    }
    model: libraryModel
    itemDelegate: Text
    {
      text: styleData.value
      elide: Text.ElideRight
    }
}