我有一个带有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
}
}
答案 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
}
}