Я хотел бы смочь отменить выбор объектов в своем QTreeView путем нажатия в части QTreeView без объектов в, но я, может казаться, не нахожу так или иначе выполнения этого. Я прервал бы щелчок, это не находится на объекте, но QTreeView не имеет a clicked
сигнал, таким образом, я не могу разработать, как сделать это.
На самом деле это довольно просто (в PyQt):
class DeselectableTreeView(QtGui.QTreeView):
def mousePressEvent(self, event):
self.clearSelection()
QtGui.QTreeView.mousePressEvent(self, event)
Qt использует mousePressEvent
для выдачи щелчка
. Если вы очистите выбор перед отправкой события, то при щелчке по элементу он будет выбран, в противном случае ничего не будет выбрано. Большое спасибо Патрису за то, что помог мне с этим :)
QTreeView
наследуется от QAbstractView
( http://doc.qt.digia.com/4.6 /qtreeview.html) с сигналом щелкнул
. Проблема в том, что сигнал излучается только тогда, когда индекс действителен, поэтому вы не можете достичь желаемого с помощью этого сигнала.
Вместо этого попробуйте перехватить mousePressEvent
. В функции вы можете найти, где пользователь щелкнул, и при необходимости отменить выбор выбранного элемента.
Вы Вы можете попробовать установить другой режим выбора для вашего виджета. Я не знаю, охватывает ли какой-либо из них то, что, по-видимому, вы хотите (одиночный выбор, но с возможностью отмены выбора).