如何正确更改 TableView 的行高?

Posted

技术标签:

【中文标题】如何正确更改 TableView 的行高?【英文标题】:How to correctly change the row height of a TableView? 【发布时间】:2014-08-27 08:47:30 【问题描述】:
Window 
    id: uninstallWindow
    width: 640
    height: 480

    property variant pluginData;

    TableView 
        id:_pluginTable
        anchors.right: parent.right
        anchors.rightMargin: 0
        anchors.left: parent.left
        anchors.leftMargin: 0
        anchors.bottom: parent.bottom
        anchors.bottomMargin: 43
        anchors.top: parent.top
        anchors.topMargin: 0
        model: pluginData

        itemDelegate: Text 
            text: modelData
            font.pixelSize: 24
        

        TableViewColumn 

        
    

我花了好几个小时才走到这一步,我觉得这应该是一个相对简单的操作,为什么这么难?如您所见,我更改了表格中项目的字体大小,因为默认情况下它们太小了。这只是导致它们被不变的行大小剪裁。我试过了

    设置 rowDelegate 对象(但这会导致丢失所有其他默认样式信息,如背景、选择颜色等,我不知道如何指定它)

    李>

    基于 QAbstractListModel / QAbstractTableModel 设置自定义模型对象(出于某种原因,只有 Qt 知道,从未调用过“数据”函数...)

    设置自定义项委托(但似乎不再通过此对象控制高度)

我需要跳过哪些箍来让行改变它们​​的大小?

【问题讨论】:

带anchors的八行可以用这两个代替:anchors.fill: parent; anchors.bottomMargin:43(默认为0)。 【参考方案1】:

正如提问者已经写的那样,可以使用rowDelegate 来实现自定义行高,但这会丢弃默认样式。可以使用SystemPalette 恢复默认样式。

rowDelegate: Rectangle 
   height: 30
   SystemPalette 
      id: myPalette;
      colorGroup: SystemPalette.Active
   
   color: 
      var baseColor = styleData.alternate?myPalette.alternateBase:myPalette.base
      return styleData.selected?myPalette.highlight:baseColor
   

这将恢复行的默认背景颜色(包括在需要时交替行颜色)和所选行的颜色,这似乎就是所需要的。

【讨论】:

【参考方案2】:

在 Qt 5.10 中,以下内容对我来说就像一个魅力:

rowDelegate: Item  height: 30 

我在itemDelegate(和headerDelegate)中进行实际样式设置(字体/颜色),并通过TableViewColumns(有或没有他们自己的代表)提供内容。

【讨论】:

【参考方案3】:

要更改行高,您需要使用rowDelegate。例如:

rowDelegate: Rectangle
width: childrenRect.width
height: 40

要更改表格视图高度,您可以使用Layout.preferredHeight。例如:

Layout.preferredHeight: 300

【讨论】:

以上是关于如何正确更改 TableView 的行高?的主要内容,如果未能解决你的问题,请参考以下文章

无法更改单元格的行高 - 有 2 个原型单元格

无法更改 TableViewCells 的行高 - Swift [重复]

编辑 tableview Swift 的行高

如何设置表格中的行高以在 python-docx 中修复?

如何减少 DT 数据表中的行高

tableview 的行高没有变化,CollectionView 正在捕获所有未使用的空间,而不是在 tableViewCell 中调整自身大小