Как убрать фокус из элемента QListWidget - PullRequest
0 голосов
/ 27 мая 2018

Я использую PySide и у меня есть QListWidget.Я сделал фиктивный элемент и поместил его в верхнюю часть QListWidget.Я сделал это так, когда инструмент впервые открывается, по умолчанию никакой полезный элемент не выбран.Мне не нравится, что этот пустой элемент «подсвечивается», раскрывая элемент пользователю.Как я могу избавиться от этой схемы / выделения?Я включу изображение вопроса:

enter image description here

1 Ответ

0 голосов
/ 27 мая 2018

Этого можно добиться с помощью делегата элемента:

class NoFocusDelegate(QStyledItemDelegate):
    def paint(self, painter, option, index):
        option.state = QStyle.State_None
        super(NoFocusDelegate, self).paint(painter, option, index)

self.listWidget.setItemDelegateForRow(0, NoFocusDelegate(self))

Однако лучшим решением будет избавиться от фиктивного элемента и просто очистить фокус, установив недопустимый текущий индекс:

self.listWidget.setCurrentIndex(QModelIndex())

Теперь ни один элемент не будет выделен, и currentItem() вернет None, а currentRow() вернет -1, пока пользователь явно не выберет элемент.

...