У меня есть простой класс, который наследует QTableView, и я хочу следующее поведение: когда пользователь выбирает несколько ячеек, я хочу, чтобы первая выбранная ячейка была установлена в качестве текущего индекса.
Так, например, если я выбираю из (0, 0) в сторону (2, 2), когда я начну печатать, текст будет отображаться в (0, 0), а не (2, 2), который кажетсябыть по умолчанию.
Я попытался переопределить функцию setSelection следующим образом:
void SampleTable::setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags command)
{
if((command & QItemSelectionModel::Current) != 0)
{
QModelIndex curr = indexAt(rect.topLeft());
selectionModel()->select(curr, QItemSelectionModel::Current);
command ^= QItemSelectionModel::Current;
}
QTableView::setSelection(rect, command);
}
, но безрезультатно.Кажется, это как-то связано с событиями мыши, но я не могу точно найти проблему в исходном коде, и я надеюсь, что в любом случае есть более простой способ.