QML TableView鼠标区域不会传播点击选择模型

时间:2018-06-16 19:40:26

标签: qt qml

我有TableView代表,其中包含MouseArea。我想将点击传播到TableView,以便选择项目仍然有效。但是,如果我的MouseArea出现,我无法在TableView中选择元素。我怎么能改变这个?

TableView {
    id: tableView
    model: testModel
    selectionMode: SelectionMode.SingleSelection

    Component {
        id: testDelegate
        Item {
            id: delegateItem
                Text{
                    id: ctext
                    text: styleData.value
                    color: styleData.textColor
                }
                MouseArea {
                     id: mouseArea
                     acceptedButtons: Qt.LeftButton | Qt.RightButton
                     anchors.fill: parent
                     propagateComposedEvents: true
                      onClicked: {
                        console.log("click");
                        mouse.accepted = false
                      }

                 }


            }


    }
    TableViewColumn {
        role: "TestRole"
        delegate: testDelegate
    }
}

2 个答案:

答案 0 :(得分:0)

由于您重新定义了项目委托,因此您还应该实现项目选择。 我通常会这样做:

onClicked: {
    tableView.selection.clear();
    tableView.selection.select(styleData.row);
}

答案 1 :(得分:0)

如果您不介意使用onPressed事件代替onClicked进行用户互动,则宣传该事件还可以在TableView中进行选择(包括{{ 1}}模式,如果需要):

ExtendedSelection