所以我很想知道QlistWidget的currentItem())和selectedItems()方法是如何工作的。PYQT4 QlistWidget:當currentItemchaged被調用時,currentItem和selectedItem會有所不同,爲什麼?
我所(簡化): -I有QlistWidget與項目(usersList) -I已經QAbstractViewItem.extendedSelection激活 -I有QLineEdit的(userAge) -I列表與關鍵字的詞典DataDict :值==> ListItem.text():QlineEdit.text())
-I已連接userAge.textChanged到功能SAVEDATA
**def** *saveData*():
currentItem=str(usersList.currentItem().text())
DataDict[currentItem]=QlineEdit.text()
-I已連接usersList.currentItemChanged到功能loadData:
**def** *loadData*(current,_previous):
currentItem=current.text()
#get data
data=dataDict[currentItem]
#clear previous data
userAge.clear()
#set Data
userAge.setText(data)
我想做/問題(簡體):
- 右目前在UI中的數據的保存/載入適用於一個項目 (CURRENTITEM),但我希望用戶可以可以選擇多個項目 的usersAge和使用setData改變所有selectedItems,我試圖通過修改我的SAVEDATA()像這樣做:
def saveData():
for item in usersList.selectedItems():
currentItem=str(item.text())
DataDict[currentItem]=QlineEdit.text()
-the現在的問題是,當我改變CURRENTITEM通過點擊另一個項目前面的數據S幫當前覆蓋加載一個
-I知道什麼是可能發生的事情(如果我沒有錯):在另一個項目 1.I點擊(改變當前項目) 2.currentItemChanged被觸發 3。 loadData()稱爲 3.a調用userAge.clear() 3.b觸發userAge.textChanged 3.c調用saveData()(現在爲空) 3.d userAge.setText(data)
3.e userAge.textChanged被觸發 3.f saveData()被調用(加載數據)
- 在我的腦海中,它應該工作正常,因爲currentItem/selectedItem是相同的,但是導致問題的原因是,當調用saveData()時,currentItem和selectedItem是不同的,如果我打印currentItem.text()和selectedItems ()[0] .text()當我輸入savData()
我注意到currentItem = currentItem(這是正確的),但selectedItems()[0] .text()= previousItem(這是錯誤的原因只有currentItem被選中)
爲什麼會發生這種情況?我究竟做錯了什麼?或者我錯過了什麼? 爲什麼選擇在更改當前項目時沒有更新?
我是一個新手,所以我可能做錯了什麼,但如果沒有人可以幫助我瞭解發生了什麼?
非常感謝你提前