QML tableView设置role为index的问题
项目中,需要将一个tableview的第一列表示为索引,且索引需从1开始。于是编写代码如下:
下面展示一些 内联代码片
。
ListModel {
id: com_model;
}
GE_TableView {
id: tableview;
height: 510;
anchors.top: root.top;
anchors.left: root.left;
anchors.right: parent.right;
clip: true;
rowHeight: 27;
model: com_model;
TableViewColumn {
role: "index"; title: qsTr("Index"); width: 100; movable: false;
}
TableViewColumn {
role: "station"; title: qsTr("Station"); width: 200; movable: false;
}
}
Component.onCompleted:
{
for(var i = 0; i < 4; i++)
{
var record = new Object;
record["id"] = i + 1;
record["station"] = "station" + (i + 1);
com_model.append(record);
}
}
好了,开始运行,表格显示无问题。但点击时,奇怪的现象发生了,点击第一行时无选中效果,点击第二行时第一行选中,点击第三行时第二行选中,依此类推。并且通过tableview的currentRow 获取到的行号和点击的行号也不一致,和高亮选中的行是一致的。经过反复查看代码,并无问题。最终经过很长时间代码对比,发现只有第一列的role命名不同,于是更改index为id。再运行代码,问题解决。
最终网上查阅相关资料,说index本身tableview内部就有此变量,故不能进行此命名。
网上相关资料较少,故在此记录,大家以后使用时切记不能使用index命名
原文地址:https://blog.csdn.net/weixin_42426713/article/details/142871788
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!