我有Qt应用程序与基于分割器的视图:在左侧是QListWidget包含可以选择的文件;选定文件的内容将以适当的格式显示在分离器的右侧。这部分工作正常。QListWidget的自定义选择
我现在需要添加比较功能:如果在QListWidget中选择了一个项目,则其内容显示在右侧;如果选择另一个项目,而不是我想显示比较结果。 (事情比这更复杂一些,因为不是所有的项目可以diff'ed。)
我想什么做的是有一个单一的选择能力不变,但随后也使只有 CTRL +鼠标点击第二选择。我尝试使用QAbstractItemView :: ExtendedSelection,然后筛选出Shift和鼠标拖动,但没有这种方法运气:虽然我可以捕获Shift键keyPressEvent()我无法阻止选择(我希望只是放弃事件就足够了);至于拖我用mouseMoveEvent()希望在状态改变为DragSelectingState时删除事件,但也没有工作。
然后,我认为坚持单选,但打开右键单击第二项上下文菜单 - 而右键单击确实发出itemSelectionChanged()信号,我还没有想出如何处理这个,因为我不'不知道哪个项目被右键单击。
打开任何其他创造性的建议不涉及添加额外的UI元素 - 我不能有任何多余的按键,组合框等