myListWidget=QtGui.QListWidget()
for i in range(10):
item=QtGui.QtGui.QListWidgetItem()
myListWidget.addItem(item)
indexToRemove=[2,4,6]
itemsToRemove=[]
for index in indexToRemove:
item=myListWidget.item(index)
if item: itemsToRemove.append(item)
for i in range(myListWidget.count()):
listItem = myListWidget.item(i)
if not listItem: continue
if not listItem in itemsToRemove: continue
itemRow=myListWidget.row(listItem)
if itemRow:
myListWidget.takeItem(itemRow)
因此,我想首先指出的是,实际上并不是通过
QModelIndex
删除,而是通过与特定项(或项行)关联的整数来删除。如果要删除的每个项目都有QModelIndex
s,那么在第一次删除之后,当您查询index.isValid()
时,所有索引都将返回False
。这应该很有意义,很明显,当您删除一个项时,所有索引都将无效(正如您所发现的)。在简而言之,Qt应该帮助你阻止你做你想做的事情!在
唯一可靠的解决方案是根据项目列表进行删除。如果需要,可以在每次删除循环的迭代中从项中查找项索引(并按索引删除),但不能存储索引列表并期望删除操作正常。在
一种方法是按项删除,而不是不断更改索引号。 首先生成要删除的项的列表。然后迭代树中的项,将每个项与存储在要删除的项列表中的项进行比较。如果为真,则删除。在
QListWidget()
QTreeWidget()
^{pr2}$相关问题 更多 >
编程相关推荐