我只是想在QML文件中创建一个TableView,就像这样-
TableView {
id: resultListTableView
anchors.fill: parent
rowDelegate: Rectangle {
color: "#D3D3D3"
height: 30
}
itemDelegate: Rectangle {
width: 100
height: 50
border.color: "#000000"
border.width: 1
Text {
id: textItem
text: styleData.value
anchors.fill: parent
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
elide: Text.ElideRight
}
}
headerDelegate: Rectangle {
height: textItem.implicitHeight * 1.2
width: textItem.implicitWidth
color: "lightsteelblue"
Text {
id: textItem
anchors.centerIn: parent
text: styleData.value
elide: Text.ElideRight
}
}
TableViewColumn {
role: "file"
title: "File"
width: resultListTableView.viewport.width * 0.3
movable: false
resizable: false
}
TableViewColumn {
role: "type"
title: "Type"
width: resultListTableView.viewport.width * 0.2
movable: false
resizable: false
}
TableViewColumn {
role: "size"
title: "Size"
width: resultListTableView.viewport.width * 0.2
movable: false
resizable: false
}
TableViewColumn {
role: "path"
title: "Path"
width: resultListTableView.viewport.width * 0.3
movable: false
resizable: false
}
model: ResultListDataModel {}
onDoubleClicked: {
const element = model.get(row)
console.log("Downloading file ", element.file, "of size", element.size)
}
}
此组件是TabView的一部分,当单击相应的选项卡时显示。但是,当单击选项卡时,我会随机收到一个绑定循环警告:
QML TableView: Binding loop detected for property "__scrollBarTopMargin"
我没有做任何可能导致此绑定循环的事情,所以我想知道问题出在哪里。有人知道这是怎么回事吗?
答案 0 :(得分:1)
在没有Qt开发人员环境的情况下进行纯粹的推测,但是我想视口取决于列的宽度,而列的宽度现在取决于视口。
缺少设置列宽度的四行将证明或否定真正的快。
如果这种疯狂的猜测不起作用,那么从这里的来源https://github.com/qt-creator/qt-creator/blob/master/tests/auto/qml/codemodel/importscheck/005_compositeQmlCopyAndCpp/QtQuick/Controls/TableView.qml,我会看到__scrollBarTopMargin: (__style && __style.transientScrollBars || Qt.platform.os === "osx") ? headerrow.height : 0
。
您可以考虑修改标头委托,以查看是否删除了警告。
哦,哇,那个ID重复很微妙。正如您自己说的那样,似乎重复的ID会使您的大小混乱。希望这是您收到的第一个警告,而不是您实际上收到的疯狂警告。