在qListView中,删除的项不会在vi中更新

2024-04-27 09:50:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我用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}$

感谢您抽出时间:)


Tags: path项目模型selfifconnectactionval
1条回答
网友
1楼 · 发布于 2024-04-27 09:50:13

QStandardItemModel

Chirag如果你在写你自己的模型,它会消耗很多时间。相反,请查看QStandardItemModel,因为它为我们提供了很多已经实现的东西,我们只需要根据需求在代码中使用它们。在

我正在使用这个QStandardItemModel并且有我自己的contextmenu。在

self.model = QtGui.QStandardItemModel()

如果我在代码中选择delete选项,这段代码将帮助我们删除listview中选择的项(即删除该行)。在

^{pr2}$

相关问题 更多 >