9

I have a QTableView object in my dialog.

I need to access the horizontal headers of this table and put them into a QStringList object.

Despite intensive search, I could not find in Qt documentation how to get this list of headers.

Edit: The closest I've found anywhere is this, but it's dealing with QTableWidget, and the functions used aren't available for QTableView. Unfortunately, I'm not at liberty to switch the object in question to a table widget.

AAEM
  • 1,837
  • 2
  • 18
  • 26
thnkwthprtls
  • 3,287
  • 11
  • 42
  • 63

2 Answers2

21

So, the only way I can figure out to do it as like this:

QStringList headers;
for(int i = 0; i < myTableView->model()->columnCount(); i++)
{
  headers.append(myTableView->model()->headerData(i, Qt::Horizontal).toString());
}

Honestly this still seems a lot more convoluted than it should have to be, but at least it works.

eyllanesc
  • 235,170
  • 19
  • 170
  • 241
thnkwthprtls
  • 3,287
  • 11
  • 42
  • 63
  • 9
    I think "a lot more convoluted than it should have to be" is the official motto of Qt's ItemView classes ;) – Jeremy Friesner Jun 29 '14 at 00:53
  • 1
    @JeremyFriesner haha I feel the exact same way, ListView isn't too bad but TableView is such a pain, and that's nothing compared to the TreeView – thnkwthprtls Jul 10 '14 at 12:33
2

You can simplify it a bit, like so. this is the python variation

items = []
for x in range(tbl.columnCount()):
    items.append(tbl.horizontalHeaderItem(x).text())
QuentinJS
  • 162
  • 1
  • 9