2016-06-16 3 views
0

У меня есть объект типа QListWidget, где пользователь может выбрать 0 или более элементов.PyQt - инициировать событие, когда ничего не выбрано в QListWidget?

Если ничего не выбрано, как я могу вызвать событие, которое вызовет функцию? Я знаю, что вы можете обнаружить, нажав на конкретный пункт с помощью:

QListWidget.itemClicked.connect(self.item_click) 

Есть ли что-то подобное, когда не выбрано вообще ничего? (или, другими словами, QListWidget ясен)

Спасибо!

ответ

1

Как правило, вы должны подключиться к сигналу itemSelectionChanged, а затем проверить, выбрано ли что-либо.

self.listwidget.itemSelectionChanged.connect(self.on_selection_changed) 

def on_selection_changed(self): 
    if not self.listwidget.selectedItems(): 
     # Do Stuff Here 
     self.nothing_selected_function() 

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

self.listwidget = ... # Code that builds and populates list widget 
# Call this manually the first time. 
self.on_selection_changed() 

Но часть вашего вопроса неоднозначна. Почему вы хотите знать, когда что-то «не выбрано»? Как насчет того, когда новый элемент будет добавлен в список? Должна ли она запускать вашу функцию «не выбрана», так как список изменился, но все же ничего не выбрано?

+0

Всякий раз, когда нет выбранного элемента, я хочу отключить некоторые кнопки и текстовые поля. Когда пользователь добавляет новый элемент в список, он автоматически устанавливает этот элемент как выбранный. – Gambit2007

Смежные вопросы