将鼠标悬停在tableView列的标题上

时间:2019-07-11 10:14:46

标签: hover qml highlight mouseover

我有一个带有4个TableViewColumns的简单TableView,通常不使用qml,因此我不确定如何在此代码中正常工作。

我想要的是我需要将鼠标悬停在TableView标头(列名称)上。我检查了一下,没有找到解决我问题的任何简单解决方案。如果有一个在线解决方案,我向您道歉,但已经花了几个小时来遍历对我没有帮助的代码。

我试图在TableVIewColumn内使用工具提示,但它从未显示,并且我发现TableViewColumn内不支持Mouse Area。也许解决方案很简单,但我不知道 此时此刻。

Rectangle {
    width: parent.width
    height: parent.height

    TableView {
        id: table
        width: parent.width
        height: parent.height
        headerVisible: true

        TableViewColumn {
            id: time
            role: "t-stamp"
            title: "Time"
            width: 60
        }
        TableViewColumn {
            id: d
            role: "id"
            title: "SignId"
            width: 40
        }
        TableViewColumn {
            id: sid
            role: "s-id"
            title: "StratId"
            width: 50
        }
        TableViewColumn {
            id: stratname
            role: "strat_name"
            title: "StratName"
            width: 200
        }

        Connections{
            target: MessageTabelModel
            onUpdateView:{
                  table.resizeColumnsToContents()
            }
        }
        model: MessageTabelModel
    }
}

1 个答案:

答案 0 :(得分:1)

TableView具有包含鼠标信息的headerDelegate属性:

  

在标题委托中,您可以访问以下特殊内容   属性:

     
      
  • styleData.value-该项目的值或文本
  •   
  • styleData.column-   列的索引
  •   
  • styleData.pressed-当列为true时为true   被按下
  •   
  • styleData.containsMouse-当列位于下面时为true   鼠标
  •   
  • styleData.textAlignment-的水平文本对齐方式   列(自QtQuickControls 1.1起)
  •   

因此,您可以根据需要使用styleData.containsMouse,例如使用简单的基本文本:

headerDelegate: Text {
    color: styleData.containsMouse ? "red" : "black"
    text: styleData.value
    // ...
}

或者如果您想进行更多自定义:

headerDelegate: Rectangle {
    height: 20
    implicitWidth: headerText.paintedWidth
    border.color: "black"
    // ...

    Text {
        id: headerText
        color: styleData.containsMouse ? "red" : "black"
        text: styleData.value
        anchors.fill: parent
        verticalAlignment: Text.AlignVCenter
        horizontalAlignment: Text.AlignHCenter
    }
}