鼠标悬停事件在TableView的标题中不起作用

时间:2019-06-21 06:56:13

标签: qt qml tableview

在这里问类似的问题

How to get Clicked or Pressed event on QML TableView header?

我想在悬停时突出显示标题。但是headerDelegate中的行为很奇怪。

headerDelegate: Rectangle {
    height:30
    MouseArea{
        hoverEnabled: true
        anchors.fill: parent

        onPressed: {
            console.debug("This will not be printed")
        }

        onEntered: {
            console.debug("Will print on pressed event")
        }

        onExited: {
            console.debug("Will print on released event")
        }
    }
}

将鼠标悬停完全不会触发任何事件。

1 个答案:

答案 0 :(得分:1)

悬停和其他状态由标头委托中的styleData组件处理。

如果您想知道悬停何时发生变化,请将onPressed的不同信号(onContainsMouseChangedstyleData等)连接到功能。

例如:

headerDelegate: Rectangle {
        height:30
        color: "red"
        Connections {
            target: styleData
            onPressedChanged: {
                console.debug("PRESSED:  "+ styleData.column + " " + styleData.pressed)
            }

            onContainsMouseChanged: {
                if (styleData.containsMouse)
                    console.debug("The mouse is hover the header of column " + styleData.column)
                else
                    console.debug("The mouse is leaving the header of column " + styleData.column)
            }
        }
    }