qml中tablview退出后报错



  • 程序运行时正常,当关闭程序是报错。
    qrc:/main.qml:120: TypeError: Cannot read property 'checkflags' of undefined;
    也就是itemDelegate中checkbox内 checked: helperModel.get(styleData.row).checkflags;提示错误。求大神指导。

    ListModel {
        id: modelProList
        ListElement {
            name: "101"
            value: qsTr("产线1")
        }
        ListElement {
            name: "102";
            value:  qsTr("产线2")
        }
        ListElement {
            name: "103"
            value: qsTr("产线3")
        }
        ListElement {
            name: "104"
            value:  qsTr("产线4")
        }
        ListElement {
            name: "105"
            value: qsTr("产线5")
        }
        ListElement {
            name: "106"
            value:  qsTr("产线6")
        }
        ListElement {
            name: "107"
            value: qsTr("产线7")
        }
    }
    
    ListModel {
        id: helperModel
        ListElement {
            checkflags: false;
        }
        ListElement {
            checkflags: false;
    
        }
        ListElement {
            checkflags: false;
    
        }
        ListElement {
            checkflags: false;
    
        }
        ListElement {
            checkflags: false;
        }
        ListElement {
            checkflags: false;
        }
        ListElement {
            checkflags: false;
        }
    }
    
    TableView{
        id: tableView
        anchors.fill: parent;
        backgroundVisible: false                        //背景不可见
        alternatingRowColors: false
        frameVisible:false
        model: modelProList
        verticalScrollBarPolicy: Qt.ScrollBarAlwaysOff
        horizontalScrollBarPolicy: Qt.ScrollBarAlwaysOff
    
    
    
        TableViewColumn
        {
            id: checkedColumn;
            title: qsTr("选择");
            width: tableView.width * 0.2;
        }
    
        TableViewColumn{
            role: "name";
            title: qsTr("工厂编码");
            width: tableView.width * 0.4;
        }
    
        TableViewColumn{
            role: "value";
            title: qsTr("工厂名称");
            width: tableView.width * 0.4;
    
        }
    
        headerDelegate: Rectangle{
            color: "#414549"
            height: parent.width * (60.0 / 640.0);
            Text{
                anchors.centerIn: parent
                text: styleData.value
                color: "white"
                font.pixelSize:  parent.width * (45.0 / 640.0) * 0.7;
            }
        }
    
        itemDelegate: Item {
            CheckBox
            {
                id: checkbox;
                anchors.centerIn: parent;
                checked: helperModel.get(styleData.row).checkflags;
                visible: isCheckColumn( styleData.column );
                height: (30.0 / 640.0) * parent.width;
            }
            Text
            {
                anchors{top: parent.top; topMargin: 0.3* height; right:parent.right}
                anchors{left: parent.left; leftMargin: 10}
                text: styleData.value;
                verticalAlignment: Text.AlignVCenter;
                horizontalAlignment: Text.AlignLeft;
                color: "white";
                anchors.centerIn: parent;
                height: (30.0 / 640.0) * parent.width;
                font.pixelSize:  parent.width * (32.0 / 640.0);
                elide: styleData.elideMode;
                wrapMode: Text.WrapAtWordBoundaryOrAnywhere;
            }
    
            MouseArea{
                anchors.fill: parent;
                onClicked: {
                    helperModel.setProperty(styleData.row, "checkflags", !checkbox.checked)
                }
            }
        }
    
    
        rowDelegate: Rectangle {
            id: rowRectdelete;
            height: (30.0 / 640.0) * parent.width;
            color:"#36393b";
            Rectangle{
                height: 1;
                width: parent.width;
                anchors.bottom: parent.bottom;
                color: "#6a6a6a";
            }
        }
    }
    function isCheckColumn( columnIndex )
    {
        return tableView.getColumn( columnIndex ) === checkedColumn
    }
    
    function selectsAll(flag) {
        for(var iter=0; iter < helperModel.count; iter++) {
            helperModel.setProperty(iter, "checkflags", flag);
        }
    }


  • @我叫胡孟岳qml中tablview退出后报错 中说:

    styleData.row

    你可以将styleData.row换成index吗?



  • 知道问题所在了,styleData.row需要判断一下。


登录后回复
 

与 萌梦社区 的连接断开,我们正在尝试重连,请耐心等待