2016-06-16 42 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

相關問題