У меня есть приложение Qt с видом на основе сплиттера: с левой стороны находится QListWidget, содержащий файлы, которые можно выбрать; содержимое выбранного файла отображается в соответствующем формате с правой стороны разделителя. Эта часть работает нормально.Пользовательский множественный выбор для QListWidget
Теперь мне нужно добавить функцию сравнения: если в QListWidget выбран один элемент, то его содержимое отображается с правой стороны; если выбран другой элемент, вместо того, чтобы отображать результат сравнения. (Вещи немного сложнее, потому что не все предметы могут быть различны.)
Что я хотел бы сделать, так это иметь единственную возможность выбора, но затем включить только CTRL + click click for second выбор. Я попытался использовать QAbstractItemView :: ExtendedSelection, а затем отфильтровать перетаскивание Shift и мышью, но мне не повезло с этим подходом: пока я мог захватить клавишу Shift с помощью keyPressEvent(), я не мог предотвратить выбор (я надеялся, что просто отбросить событие будет достаточно); как для drag Я использовал mouseMoveEvent(), надеясь сбросить событие, когда состояние изменится на DragSelectingState, но это тоже не сработало.
Я рассмотрел вопрос о том, t знать, какой элемент был щелкнут правой кнопкой мыши.
открыты для любых других творческих предложений, которые не связаны с добавлением дополнительных элементов пользовательского интерфейса - я не могу иметь какие-либо дополнительные кнопок, комбинированные окна и т.д.