2015-12-29 72 views
0

在PyQt4中,如何通過名稱字符串從QListView\QListWidget中刪除項目?通過字符串名稱從QListView QListWidget中刪除項目

def deleteItem(itemName): 
    item = dialog.listWidget.indexFromItem(itemName) 
    dialog.listWidget.takeItem(item) 

這是我這麼遠,明明餵養字符串indexFromItem是不工作...

+0

so'inventoryList'' listWidget'以及? –

+0

對不起,我正在用通用的替換我自己的變量,並忘記替換它們。修復了問題。 – Nix

回答

0

首先,使用findItems查找項listWidget

items_list = dialog.listWidget.findItems(itemName,Qt.MatchExactly)

這將返回一個匹配的QListWidgetItem列表與itemName(如果只有一個項目與itemName 0應該是一個項目的列表)

其次,請致電dialog.listWidget.row()查找找到的物品的行號。

最後,detele那/使用dialog.listWidget.takeItem()

所以在最後的項目(S),你的作用是這樣的:

def deleteItem(itemName): 
    items_list = dialog.listWidget.findItems(itemName,QtCore.Qt.MatchExactly) 
    for item in items_list: 
     r = dialog.listWidget.row(item) 
     dialog.listWidget.takeItem(r) 

同樣,你必須確保沒有任何物品與相同的名稱,否則他們將一起被刪除。

+0

的MULTILINE_ACL_COMPONENT = listWidget.findItems(ITEMNAME,QtCore.MatchExactly) AttributeError的:「模塊」對象沒有屬性「MatchExactly」 有這種錯誤,我用QtCore因爲它看起來像MatchExactlyt處於QtCore類,我也沒有找到Qt模塊...或者我輸入了錯誤的東西? – Nix

+0

哦,它是QtCore.Qt.MatchExactly。似乎工作!謝謝 – Nix

+0

@Nix ...是的,這取決於你如何導入PyQt模塊...我已經更新了我的答案... –