我有Qt應用程序與基於分割器的視圖:在左側是QListWidget包含可以選擇的文件;選定文件的內容將以適當的格式顯示在分離器的右側。這部分工作正常。QListWidget的自定義選擇
我現在需要添加比較功能:如果在QListWidget中選擇了一個項目,則其內容顯示在右側;如果選擇另一個項目,而不是我想顯示比較結果。 (事情比這更復雜一些,因爲不是所有的項目可以diff'ed。)
我想什麼做的是有一個單一的選擇能力不變,但隨後也使只有 CTRL +鼠標點擊第二選擇。我嘗試使用QAbstractItemView :: ExtendedSelection,然後篩選出Shift和鼠標拖動,但沒有這種方法運氣:雖然我可以捕獲Shift鍵keyPressEvent()我無法阻止選擇(我希望只是放棄事件就足夠了);至於拖我用mouseMoveEvent()希望在狀態改變爲DragSelectingState時刪除事件,但也沒有工作。
然後,我認爲堅持單選,但打開右鍵單擊第二項上下文菜單 - 而右鍵單擊確實發出itemSelectionChanged()信號,我還沒有想出如何處理這個,因爲我不'不知道哪個項目被右鍵單擊。
打開任何其他創造性的建議不涉及添加額外的UI元素 - 我不能有任何多餘的按鍵,組合框等