the JinX the JinX - 22 days ago 5
C++ Question

Selecting a row in QTreeView programatically

I have a QTreeView with QFileSystemModel as model.

The QTreeView has SelectionBehavior set to SelectRows.

In my code I read a dataset to select and then select them via:

idx = treeview->model()->index(search);
selection->select(idx, QItemSelectionModel::Select);


This selects a cell, not the row . .

Have added a stupid workaround, but would rather fix this the correct way.

for (int col=0; col< treeview->model()->columnCount(); col++)
{
idx = treeview->model()->index(search, col);
selection->select(idx, QItemSelectionModel::Select);
}


Or is that ^^ the only way to do it?

Answer

You can also select an entire row using an QItemSelection:

selection->select (
    QItemSelection (
        treeview->model ()->index (search, 0),
        treeview->model ()->index (search, treeview->model ()->columnCount () - 1)),
    QItemSelectionModel::Select);

Also if you also want row selection for user clicks you need to set the selection behavior:

treeview->setSelectionBehavior (QAbstractItemView::SelectRows)