Действительно ли возможно отменить выбор в QTreeView путем нажатия от объекта?

Я хотел бы смочь отменить выбор объектов в своем QTreeView путем нажатия в части QTreeView без объектов в, но я, может казаться, не нахожу так или иначе выполнения этого. Я прервал бы щелчок, это не находится на объекте, но QTreeView не имеет a clicked сигнал, таким образом, я не могу разработать, как сделать это.

14
задан Skilldrick 3 May 2010 в 21:18
поделиться

3 ответа

На самом деле это довольно просто (в PyQt):

class DeselectableTreeView(QtGui.QTreeView):
    def mousePressEvent(self, event):
        self.clearSelection()
        QtGui.QTreeView.mousePressEvent(self, event)

Qt использует mousePressEvent для выдачи щелчка . Если вы очистите выбор перед отправкой события, то при щелчке по элементу он будет выбран, в противном случае ничего не будет выбрано. Большое спасибо Патрису за то, что помог мне с этим :)

11
ответ дан 1 December 2019 в 06:43
поделиться

QTreeView наследуется от QAbstractView ( http://doc.qt.digia.com/4.6 /qtreeview.html) с сигналом щелкнул . Проблема в том, что сигнал излучается только тогда, когда индекс действителен, поэтому вы не можете достичь желаемого с помощью этого сигнала.

Вместо этого попробуйте перехватить mousePressEvent . В функции вы можете найти, где пользователь щелкнул, и при необходимости отменить выбор выбранного элемента.

7
ответ дан 1 December 2019 в 06:43
поделиться

Вы Вы можете попробовать установить другой режим выбора для вашего виджета. Я не знаю, охватывает ли какой-либо из них то, что, по-видимому, вы хотите (одиночный выбор, но с возможностью отмены выбора).

0
ответ дан 1 December 2019 в 06:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: