Выбор строки в QTreeView программно

у меня есть QTreeView с QFileSystemModel в качестве модели.

QTreeView имеет SelectionBehavior набор в SelectRows.

в моем коде я читаю набор данных для выбора и выберите их через:

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

Это выбирает ячейку, а не строку . .

добавили глупый обходной путь, но предпочли бы исправить это правильным способом.

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

или это единственный способ сделать это?

2 ответов


вы также можете выбрать целую строку с помощью QItemSelection:

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

также, если вы также Хотите выбрать строку для кликов пользователя, вам нужно установить поведение выбора:

treeview->setSelectionBehavior (QAbstractItemView::SelectRows)

Если вы хотите выбрать полную строку, вы должны использовать следующее:

selection->select(idx, QItemSelectionModel::Select | QItemSelectionModel::Rows);

обратите внимание, что иногда вы можете сначала очистить выделение:

selection->select(idx, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);