我用qListView填充了一些项目,这些项目实际上是我从文件夹中读取的文件名。 现在,我使用上下文菜单操作“remove”,在后台删除相应的文件。在
问题是qListView,没有更新ie。它仍然显示我已经删除的项。在
我的问题是,如何动态刷新视图?我是MVC编程新手,想知道是否可以在模型中实现它?或者,我必须使用递归函数来更新视图吗。顺便说一句,m使用qAbstract列表模型,甚至尝试过currentItemChanged和dataChanged,但似乎什么都不起作用。在
TestStepInstViewHdlr是QListView类的实例:
TestStepInstViewHdlr.setSelectionMode(QAbstractItemView.MultiSelection)
TestStepInstViewHdlr.show()
TestStepViewHdlr.stepSelected.connect(getTestStepName)
TestStepInstViewHdlr.itemSelectionChanged.connect(TestStepInstViewHdlr.getInstanceName)
TestStepInstViewHdlr.customContextMenuRequested.connect(TestStepInstViewHdlr.onContext)
def getInstanceName(self):
index = self.selectedIndexes()
val = ""
valArray = []
for i in index:
val = i.data()
valArray.append(val)
print(valArray)
return valArray
def onContext(self, position):
instArray = []
constHdlr = const.Constant()
# Create a menu
menu = QtGui.QMenu()
rmvAction = menu.addAction("Remove")
canAction = menu.addAction("Cancel")
action = menu.exec_(self.mapToGlobal(position))
if action == rmvAction:
instArray = self.getInstanceName()
path = constHdlr.TEST_STEP_INSTANCE_PATH + StepName+"\\"
for inst in instArray:
path = path + inst
if os.path.isfile(path):
os.remove(path)
if action == canAction:
pass
我的模型是:
^{pr2}$感谢您抽出时间:)
QStandardItemModel
Chirag如果你在写你自己的模型,它会消耗很多时间。相反,请查看QStandardItemModel,因为它为我们提供了很多已经实现的东西,我们只需要根据需求在代码中使用它们。在
我正在使用这个QStandardItemModel并且有我自己的contextmenu。在
如果我在代码中选择delete选项,这段代码将帮助我们删除listview中选择的项(即删除该行)。在
^{pr2}$相关问题 更多 >
编程相关推荐