我有三个元素的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 +单击第一个视图以获得意外结果。
答案 0 :(得分:0)
根据您描述的行为和一些代码审查我能想到的最好的是QAbstractItemView
根据之前的鼠标位置与当前选定的{{1}对鼠标按下事件进行选择在模型中。
要解决此问题,您可能需要继承index
并重新实现QListView
函数来更改行为。相反,您可以在执行mousePressEvent
选择时简单地设置鼠标位置。