Как получить событие Clicked или Pressed в заголовке QML TableView? - PullRequest
0 голосов
/ 18 мая 2018

Я пытаюсь получить событие щелчка или нажатия в заголовке QML TableView.

Я пытался на HeaderDelegate создать MouseArea с width, height и anchors.fill из родительского элемента и получить onClickedили onPressed события, но не работают.

Пример:

MouseArea {
    width: parent.width
    height: parent.height
    anchors.fill: parent

    onClicked: {
        console.debug("CLICKED: "+styleData.pressed)
        console.debug("COLUMN:  "+ styleData.column)
    }

    onPressed: {
        console.debug("PRESSED: "+styleData.pressed)
        console.debug("COLUMN:  "+ styleData.column)
    }
}

, который ничего не регистрирует

Я также пытался использовать «Соединения» на HeaderDelegate, с событиями «target: styleData» и «onPressedChanged», и сработало, но «onPressedChanged» получает 4 изменения одновременно.Пример:

Connections {
    target: styleData
    onPressedChanged: {
        console.debug("PRESSED: "+ styleData.pressed)
        console.debug("COLUMN:  "+ styleData.column)
    }
}

Возврат:

qml: PRESSED: true 
qml: COLUMN:  0 
qml: PRESSED: true 
qml: COLUMN:  0 
qml: PRESSED: false 
qml: COLUMN:  0 
qml: PRESSED: false 
qml: COLUMN:  0 

Весь код из TableView:

TableView  {
    id: tViewEnt
    width: parent.width
    height: parent.height
    anchors.verticalCenter: parent.verticalCenter
    anchors.horizontalCenter: parent.horizontalCenter
    verticalScrollBarPolicy: Qt.ScrollBarAlwaysOff
    horizontalScrollBarPolicy: Qt.ScrollBarAlwaysOff


    TableViewColumn {
        id: column0
        title: "column0"
        width: 30

        delegate: CheckBox {
            style: CheckBoxStyle {
                indicator: Rectangle {
                    //INDICATOR PROPERTIES
                }
            }
        }
    }
    TableViewColumn {
        title: "column1"
        role: "column1"
    }
    TableViewColumn {
        title: "column2"
        role: "column2"
    }


    headerDelegate: Rectangle {
        height: tViewEnt.height / 15
        color: styleData.column===0 ? "#4D4D4D" : "#0077B3"

        Rectangle {
            anchors.right: parent.right
            anchors.top: parent.top
            anchors.bottom: parent.bottom
            anchors.bottomMargin: 1
            anchors.topMargin: 1
            width: 1
            color: "#333"
        }
        Text {
            text: styleData.value
            color: "#CFF"
            width: parent.width
            height: parent.height
            font.pointSize: 18
            minimumPointSize: 3
            fontSizeMode: Text.Fit
            horizontalAlignment: Text.AlignHCenter
            verticalAlignment: Text.AlignVCenter
        }

        Connections {
            target: styleData
            onPressedChanged: {
                console.debug("PRESSED: "+ styleData.pressed)
                console.debug("COLUMN:  "+ styleData.column)
            }
        }
    }
}

Итак, как я могу получить событие щелчка или нажатие на делегат заголовкаправильно?

...