如何在鼠标单击QtQuick2 TableView时获取列号



我正在尝试处理表格单元格上的鼠标点击。只有当我点击某个单元格时,我才需要响应右键。但我找不到如何捕获列号。使用了QtQuick 2.12中的TableView。或者也许你可以没有列号?来自QtQuickControls的Tableview,由于各种原因,我无法使用。

TableView {
    id: table
    boundsBehavior: Flickable.StopAtBounds
    anchors.fill: parent
    columnSpacing: 0
    rowSpacing: 0
    anchors.rightMargin: 2
    anchors.leftMargin: 5
    anchors.bottomMargin: 5
    anchors.topMargin: 70
    clip: true
    model: TableModel {
        id: model
        Component.onCompleted: {
            model.init()
        }
    }
    delegate: Rectangle {
        id: tableDelegate
        implicitWidth: textDelegate.implicitWidth + textDelegate.padding * 2
        implicitHeight: 30
        border.width: 0
        TextField {
            id: textDelegate
            text: tabledata
            anchors.fill: parent
            anchors.verticalCenter: parent.verticalCenter
            clip: true
            horizontalAlignment: TextField.AlignHCenter
            verticalAlignment: TextField.AlignVCenter
            enabled: true
            background: Rectangle {
                border.color: "#e61d6887"
                color: "#e6ffffff"
                border.width: 1
            }
            selectByMouse: true
            MouseArea {
                id: mad
                anchors.fill: parent
                acceptedButtons: Qt.LeftButton | Qt.RightButton
                onClicked: {
                    switch(mouse.button){
                    case Qt.RightButton:
                        console.log("right button")
                        dialog.open()
                        break
                    case Qt.LeftButton:
                        console.log("left button")
                        break
                    default:
                        break
                    }
                }
            }
        }
    }
}

您必须使用 model.row 和 model.column(或行和列(分别获取委托中的行或列。

// ...
MouseArea {
    id: mad
    anchors.fill: parent
    acceptedButtons: Qt.LeftButton | Qt.RightButton
    onClicked: {
        console.log(model.row, model.column)
        // or
        // console.log(row, column)
        // ...
     }
// ...

我已经在文档中报告了该错误:QTBUG-76529。

相关内容

  • 没有找到相关文章

最新更新