Выбор программы в 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);
}
Или это единственный способ сделать это ^?
Ответы
Ответ 1
Вы также можете выбрать целую строку с помощью QItemSelection:
selection->select (
QItemSelection (
treeview->model ()->index (search, 0),
treeview->model ()->index (search, treeview->model ()->columnCount () - 1)),
QItemSelectionModel::Select);
Также, если вы также хотите выбрать строку для пользовательских кликов, вам нужно установить поведение выбора:
treeview->setSelectionBehavior (QAbstractItemView::SelectRows)
Ответ 2
Если вы хотите выбрать полную строку, вы должны использовать следующее:
selection->select(idx, QItemSelectionModel::Select | QItemSelectionModel::Rows);
Обратите внимание, что иногда вы можете сначала удалить выделение:
selection->select(idx, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);