Неожиданный выбор смещения в QListView с общим QItemSelectionModel - PullRequest
1 голос
/ 12 января 2012

У меня есть QListView с тремя элементами: A, B, C. Выберите A в поле зрения.Затем программным путем выберите C:

selectionModel.setCurrentIndex(idxC,  ItemSelectionModel::NoUpdate);
selectionModel.select(QItemSelection(idxC, idxC), QItemSelectionModel::ClearAndSelect);

Теперь элемент C выбран и отображается в данный момент, отметка с элементом A отсутствует.После этого я нажимаю + кликаю на элементе B и получаю A, B выбор вместо ожидаемого B, C.

Есть идеи, что с этим делать?

Эту ситуацию можно увидеть в qt Chartпример (http://developer.qt.nokia.com/doc/qt-4.8/itemviews-chart.html),, где два представления списка используют одну и ту же модель выбора: щелкните первое представление, щелкните второе представление, Shift + щелкните первое представление, чтобы получить неожиданный результат.

1 Ответ

0 голосов
/ 12 января 2012

Основываясь на описанном вами поведении и некотором обзоре кода, лучше всего я могу понять, что QAbstractItemView делает выбор события нажатия мыши на основе предыдущей позиции мыши по сравнению с выбранным в данный момент index вмодель.

Чтобы исправить это, вам может понадобиться использовать подкласс QListView и переопределить функцию mousePressEvent для изменения поведения.И наоборот, вы можете просто установить положение мыши, когда вы делаете выбор Item C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...