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.