Установите фокус в QTableView

У меня есть QMainWindow, содержащий QTableView в качестве центрального виджета.

Я заполняю этот QTableView, устанавливая модель (которая получена из QAbstractTableModel).

Поведение выбора для QTableView установлено на QAbstractItemView::SelectRows. Это означает, что если я щелкну ячейку, вся строка будет выбрана (и выделена).

Я хотел бы иметь возможность сфокусировать/выделить строку в QTableView программно. Другими словами, я хотел бы сфокусировать/выделить строку, не нажимая на нее пользователем. Как это можно сделать, «подделать» щелчок в ячейке?


person Lieuwe    schedule 02.02.2016    source источник


Ответы (1)


Вы можете добиться этого, используя QItemSelectionModel вашего табличного представления, которое вы можете получить с помощью вызов метода QTableView::selectionModel(). QItemSelectionModel имеет общедоступный слот QItemSelection::select(QModelIndex, QItemSelectionModel::SelectionFlags), который изменяет текущий выбор при вызове. Поэтому, когда вы хотите выделить конкретную строку, вы можете сделать это:

QItemSelectionModel::SelectionFlags flags = QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows;
QModelIndex index = m_tableView->model()->index(rowIndex, 0);
m_tableView->selectionModel()->select(index, flags);

Описание флагов выбора можно найти здесь.

person teapot_of_wine    schedule 02.02.2016