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.