获取qml

时间:2016-11-18 15:33:52

标签: qt qml qtquickcontrols

我在TableView中填充了文本。其中一列有复选框作为委托。我查了一个复选框。如何获取当前复选框的行索引?

要获取行索引,我使用currentRow函数,但它返回-1,因为当我选中复选框时,我不会选择行。

还有其他方法可以获得复选框行索引吗?

1 个答案:

答案 0 :(得分:2)

这样做的可能性太大了。其中一个非常简单的例子:

import QtQuick 2.7
import QtQuick.Window 2.0
import QtQuick.Controls 1.4


Window {
    visible: true
    width: 300
    height: 200

    TableView {
        id: table
        anchors.fill: parent
        signal checked(int row, int col, bool isChecked)
        TableViewColumn { role: "col1"; title: "Columnt1"; width: 100 }
        TableViewColumn { role: "col2"; title: "Columnt2"; width: 100 }
        TableViewColumn { role: "col3"; title: "Columnt3"; width: 100 }
        model: ListModel {
            ListElement { col1: true; col2: false; col3: false }
            ListElement { col1: false; col2: false; col3: true }
            ListElement { col1: true; col2: false; col3: true }
        }
        itemDelegate: Item {
            CheckBox {
                anchors.centerIn: parent
                checked: styleData.value
                onClicked: {
                    table.selection.clear();
                    table.selection.select(styleData.row);
                    table.currentRow = styleData.row;
                    table.checked(styleData.row, styleData.column, checked);
                }
            }
        }
        onChecked: console.log(row, col, isChecked);
    }
}