QListView中具有共享QItemSelectionModel的意外移位选择

时间:2012-01-12 10:03:49

标签: c++ qt

我有三个元素的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图表示例(http://developer.qt.nokia.com/doc/qt-4.8/itemviews-chart.html)中看到,其中两个列表视图共享相同的选择模型:单击第一个视图,单击第二个视图,shift +单击第一个视图以获得意外结果。

1 个答案:

答案 0 :(得分:0)

根据您描述的行为和一些代码审查我能想到的最好的是QAbstractItemView根据之前的鼠标位置与当前选定的{{1}对鼠标按下事件进行选择在模型中。

要解决此问题,您可能需要继承index并重新实现QListView函数来更改行为。相反,您可以在执行mousePressEvent选择时简单地设置鼠标位置。