【问题标题】:How to correctly change the row height of a TableView?如何正确更改 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 {

        }
    }
}

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

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

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

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

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

【问题讨论】:

  • 带anchors的八行可以用这两个代替:anchors.fill: parent; anchors.bottomMargin:43(默认为0)。

标签: qt qml qtableview qt-quick


【解决方案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
      

      【讨论】:

        猜你喜欢
        • 2011-12-07
        • 1970-01-01
        • 1970-01-01
        • 2021-03-27
        • 1970-01-01
        • 1970-01-01
        • 2020-05-26
        • 1970-01-01
        • 2013-01-16
        相关资源
        最近更新 更多