自学内容网 自学内容网

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)!