PDA

View Full Version : TableView highlight column on mouse-over



KiNgFrUiT
3rd December 2015, 13:44
I have a TableView and would like to highlight the column that the mouse is over.
I can do the visual part by drawing a rectangle in the itemDelegate.

What I am struggling with is getting the column index the mouse is over.
I found the function tableView.__listView.columnAt() but it always returns -1

Here is the relevant part of my tableView qml...



property int mouseColumn: 0

itemDelegate: Item {
id: item

Rectangle {
anchors.fill: parent
color: "Green"
visible: {
// highlight the column the mouse is over
if(styleData.column == tableView.mouseColumn)
true
else
false
}
}

MouseArea {
anchors.fill: parent
hoverEnabled: true
onPositionChanged: {
var coordinates = item.mapToItem(tableView, mouse.x, mouse.y)

// TODO: how to find column index at coordinates, columnAt always returns -1 for some reason
tableView.mouseColumn = tableView.__listView.columnAt(coordinates.x)
}
}
}

KiNgFrUiT
4th December 2015, 16:50
Ive been looking into this a bit more myself and ive found that the TableView headerVisible property makes a big difference. I am currently hiding the header.

When headerVisible=false then tableView.__listView.columnAt(x) always returns -1.

When headerVisible=true then tableView.__listView.columnAt(x) works correctly.

Id like to keep the table's header hidden if possible, hopefully a workaround for tableView.__listView.columnAt(x) is possible.

Also, im on Windows with Qt5.5.1 mingw if that makes any difference.

anda_skoa
5th December 2015, 11:43
I have a TableView and would like to highlight the column that the mouse is over.
I can do the visual part by drawing a rectangle in the itemDelegate.

What I am struggling with is getting the column index the mouse is over.

styleData.column?

Cheers,
_