【发布时间】:2012-05-18 16:42:25
【问题描述】:
我有基于拆分器视图的 Qt 应用程序:左侧是 QListWidget,其中包含可以选择的文件;所选文件的内容以适当的格式显示在拆分器的右侧。这部分工作正常。
我现在需要添加比较功能:如果在 QListWidget 中选择了一项,则其内容显示在右侧;如果选择了另一个项目而不是我想显示差异结果。 (事情比这要复杂一些,因为并非所有项目都可以区分。)
我想要做的是保持单一选择功能不变,但也启用 only CTRL + 鼠标单击以进行第二次选择。我尝试使用 QAbstractItemView::ExtendedSelection ,然后过滤掉 Shift 和鼠标拖动,但这种方法没有运气:虽然我可以使用 keyPressEvent() 捕获 Shift 键,但我无法阻止选择(我希望只删除事件就足够了);至于拖动,我使用 mouseMoveEvent() 希望在状态更改为 DragSelectingState 时删除事件,但这也不起作用。
然后我考虑坚持单选,但在右键单击第二个项目时打开上下文菜单 - 虽然右键单击确实会发出 itemSelectionChanged() 信号,但我还没有弄清楚该怎么做,因为我不知道知道哪个项目被右键单击。
欢迎任何其他不涉及添加额外 UI 元素的创意建议——我不能有任何额外的按钮、组合框等。
【问题讨论】:
标签: qt qlistwidget multipleselection custom-sections