我正在使用Python 3.3 Pyqt5。我有一个包含某些项目的QListView小部件。我想在用户双击以进行项目并进行编辑时检索项目,以便将其新值保存到数据库中。但是我找不到任何信号,例如编辑完成或有用的东西。
class MainWin(QtWidgets.QMainWindow):
itemName = ""
def __init__(self, inheritance=None):
super(MainWin, self).__init__()
self.ui=uic.loadUi("MainWin.ui", self)
self.wordList = FileProc.WordStorage().readWordFile()
self.showListView()
self.itemName = ""
def showListView(self, file = 'wordlist.db'):
MainWin.wordList = FileProc.WordStorage().readWordFile(file)
model = QtGui.QStandardItemModel(self.listView)
for row in MainWin.wordList:
item = QtGui.QStandardItem(row)
model.appendRow(item)
self.listView.setModel(model)
def editWord(self):
itemIndex = self.listView.selectedIndexes()
MainWin.itemName = itemIndex[0].data()
我以这种方式显示了列表。我想用editword()方法检索编辑的单词。在listView中的项目更改中的项目之后,如何执行EditWord()?
当我使用模型查看编程时,我宁愿做什么。是制作模型而不是使用默认的模型。
class ListMOdel(QtCore.QAbstractListModel):
def __init__(self , data=[] ,parent=None):
QtCore.QAbstractListModel.__init__(self,parent)
self.__data=data
def rowCount(self ,parent):
return len(self.__data)
def data(self,index,role):
if role == QtCore.Qt.DisplayRole:
row=index.row()
value = self.__data[row]
return value
def flags(self,index):
return QtCore.Qt.ItemIsEditable |QtCore.Qt.ItemIsEnabled| QtCore.Qt.ItemIsSelectable
def setData(self,index,value,role=QtCore.Qt.EditRole):
if role == QtCore.Qt.EditRole:
row= index.row()
self.__data[row]=value
return True
return False
class MainWin(QtWidgets.QMainWindow):
itemName = ""
def __init__(self, inheritance=None):
super(MainWin, self).__init__()
self.ui=uic.loadUi("MainWin.ui", self)
self.wordList = FileProc.WordStorage().readWordFile()
self.showListView()
self.itemName = ""
def showListView(self, file = 'wordlist.db'):
MainWin.wordList = FileProc.WordStorage().readWordFile(file)
data=[]
for row in MainWin.wordList:
data.append(row)
model = ListMOdel(data)
self.listView.setModel(model)
这是自定义模型的一个示例。SETDATA函数更新值。