2016-02-02 8 views
0

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

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

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

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

ответ

0

Вы можете достичь этого, используя 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); 

Вы можете найти флаги выбора описание here.