QTableView, выберите и Shift + клик

0

У меня небольшая, но довольно неприятная проблема с Qt QTableView

Поскольку мое представление используется в StackedLayout, я должен выбрать строку на основе поля на другой странице (эта часть работает нормально).

Поэтому, когда я показываю это представление, я выбираю строку, которую я хочу, с помощью простого

QItemSelection selection = line2selection(line);
d_view->selectionModel()->select(selection, QItemSelectionModel::Select);

где line2selection создает QItemSelection, заполненный всеми индексами для всей строки.

Как я понимаю, эта часть работает нормально, но вводит еще одну проблему:

Когда я делаю shift + click, чтобы выбрать сразу несколько строк (что отлично работает, если я не выбираю строку "программно"), он всегда отображает выбор из первой строки вместо начала с выбранной в данный момент строки.

Любая идея, как я могу решить проблему?

Кстати, я тоже пытался вызвать метод selectRow на моем представлении, но, похоже, не намного лучше...

Теги:
model-view-controller
qt

1 ответ

1
Лучший ответ

добавьте флаг QItemSelectionModel::Current в QItemSelectionModel::Select так, чтобы обновлялся индекс текущего элемента, этот индекс действует как якорь для мульти-select shift + click

  • 0
    по какой-то причине добавление этого флага не помогло, но вызов setCurrentIndex с первым индексом моего выбора сделал свое дело, даже не зная почему ... Даже с добавленным текущим флагом currentIndex всегда возвращал недопустимый индекс ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню