How to select a row in a QListView

laurent picture laurent · Aug 3, 2011 · Viewed 19.4k times · Source

I'm still struggling with using QListView, I'm trying to select one particular row in the view and I cannot figure out how to do this.

I found a similar question on StackOverflow which recommends using the createIndex() method of the model, however this method is protected (perhaps it used to be public but is not anymore) so that doesn't work for me. Any suggestion?

Answer

Liz picture Liz · Aug 3, 2011

You can get the index of anything by just calling

QModelIndex indexOfTheCellIWant = model->index(row, column, parentIndex);

Then you can call setCurrentIndex(indexOfTheCellIWant) as bruno said in his answer.

If model contains just a standard list of items as opposed to a tree structure, then it's even easier. Because we can assume that the item is a root item - no parent.

QModelIndex indexOfTheCellIWant = model->index(row, column);

With a tree structure it is a little trickier, because we can't just specify a row and a column, we need to specify these with respect to a parent. If you need to know about this part let me know and I'll explain more.

Only one more thing to note. Selection is based on cells, not really rows. So if you want to ensure that when the user selects a cell (or you do through code) that the whole row is selected you can do that by setting the "selectionBehavior" on the itself.

list->setSelectionBehavior(QAbstractItemView::SelectRows);