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 知道,“数据”函数从未被调用过......)
设置自定义项目委托(虽然高度似乎不再由该对象控制)
我需要跳过哪些环节才能让行改变其大小?
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
}
}
这将恢复行的默认背景颜色(包括在需要时交替行颜色)和所选行的颜色,这似乎是所需要的全部。
在 Qt 5.10 中:
rowDelegate: Item { height: 30 }
我在
itemDelegate
(和headerDelegate
)中进行实际的样式(字体/颜色),并由TableViewColumn
提供内容(有或没有他们自己的代表)。
要更改行高,您需要使用
rowDelegate
。例如:
rowDelegate: Rectangle{
width: childrenRect.width
height: 40
}
要更改TableView的高度,您可以使用
Layout.preferredHeight
。例如:
Layout.preferredHeight: 300